Skip to main content

A Pelican plugin to provide a support of Sphinxsearch tool, allowing users to search keywords on the texts proposed on a website generated with Pelican (a static site generator written in Python).

Project description

Shinxsearch for Pelican

The aim of this Pelican plugin is to provide a support of Sphinxsearch tool, allowing users to search keywords on the texts proposed on a website generated with Pelican (a static site generator written in Python).

The plugin itself is widely inspired from this nice work:

Github: pelican-search.

Here is a list of improvements:

  • Support of Python 3.x
  • Better support for html text with BeautifulSoup
  • HTML and PHP templates for the search box and the results page
  • Support of OR, AND, NOT query operators
  • You don't need uwsgi application only for the search engine, a simple PHP server is the only requirement

Installation of Python dependencies

This plugin needs beautifulsoup4 module (will be automatically installed if needed).

Installation:

pip install pelican-sphinxsearch

Or locally
python setup.py develop

Template integration

Examples are available in the folder site_files.

An example of search box is in the file search_box.html; you can include this template where you want in your theme; preferably in the file base.html with this directive:

{% include 'search_box.html' %}

Few CSS rules are available in the file search_box.css.

Here is an example of what you can expect if you add them to your own CSS rules:

search box screenshot

For the results, a full PHP page is available in the file search.php. This page handles form posts, does queries to Sphinxsearch engine, and prints the results for the users.

You can modify the location of your Sphinxsearch engine, by updating this line:

$sphinx->setServer('localhost', 9312);

Here is an example of what you can expect:

search results screenshot

Files search.php and search_box.html have to be put in the directory templates of your theme.

Example:

./pelican-themes/aboutwilson/templates

Pelican configuration

In your pelicanconf.py, please add/update these lines:

PLUGIN_PATHS = ['pelican-plugins']
PLUGINS = ['sphinxsearch',]
TEMPLATE_PAGES = {'search.php': 'search.php',}

Sphinxsearch configuration

Configuration file

Please edit the following file in the server:

sudo nano /etc/sphinxsearch/sphinx.conf

The only file that will be indexed is named sphinxsearch.xml and it appears in the folder output of the Pelican project when you update it.

Exemple of section for a website:

source my_blog {
	type = xmlpipe2
	xmlpipe_command = cat /var/www/html/my_own_blog/sphinxsearch.xml
	xmlpipe_fixup_utf8 = 1
	xmlpipe_field = content
	xmlpipe_attr_string = title
	xmlpipe_attr_string = author
	xmlpipe_attr_json = authors
	xmlpipe_attr_string = url
	xmlpipe_attr_string = category
	xmlpipe_attr_string = category_url
	xmlpipe_attr_json = tags
	xmlpipe_attr_string = summary
	xmlpipe_attr_string = slug
	xmlpipe_attr_timestamp = published
}

index my_blog {
	type = plain
	source = my_blog
	path = /var/lib/sphinxsearch/data/
	charset_type = utf-8
	charset_table           = U+FF10..U+FF19->0..9, U+FF21..U+FF3A->a..z\
				, U+FF41..U+FF5A->a..z, 0..9, A..Z->a..z, a..z ,U+00C0->a, U+00C1->a\
				, U+00C2->a, U+00C3->a, U+00C4->a, U+00C5->a, U+00E0->a, U+00E1->a\
				, U+00E2->a, U+00E3->a, U+00E4->a, U+00E5->a, U+0100->a, U+0101->a\
				, U+0102->a, U+0103->a, U+010300->a, U+0104->a, U+0105->a, U+01CD->a\
				, U+01CE->a, U+01DE->a, U+01DF->a, U+01E0->a, U+01E1->a, U+01FA->a\
				, U+01FB->a, U+0200->a, U+0201->a, U+0202->a, U+0203->a, U+0226->a\
				, U+0227->a, U+023A->a, U+0250->a, U+04D0->a, U+04D1->a, U+1D2C->a\
				, U+1D43->a, U+1D44->a, U+1D8F->a, U+1E00->a, U+1E01->a, U+1E9A->a\
				, U+1EA0->a, U+1EA1->a, U+1EA2->a, U+1EA3->a, U+1EA4->a, U+1EA5->a\
				, U+1EA6->a, U+1EA7->a, U+1EA8->a, U+1EA9->a, U+1EAA->a, U+1EAB->a\
				, U+1EAC->a, U+1EAD->a, U+1EAE->a, U+1EAF->a, U+1EB0->a, U+1EB1->a\
				, U+1EB2->a, U+1EB3->a, U+1EB4->a, U+1EB5->a, U+1EB6->a, U+1EB7->a\
				, U+2090->a, U+2C65->a ,U+00C8->e, U+00C9->e, U+00CA->e, U+00CB->e\
				, U+00E8->e, U+00E9->e, U+00EA->e, U+00EB->e, U+0112->e, U+0113->e\
				, U+0114->e, U+0115->e, U+0116->e, U+0117->e, U+0118->e, U+0119->e\
				, U+011A->e, U+011B->e, U+018E->e, U+0190->e, U+01DD->e, U+0204->e\
				, U+0205->e, U+0206->e, U+0207->e, U+0228->e, U+0229->e, U+0246->e\
				, U+0247->e, U+0258->e, U+025B->e, U+025C->e, U+025D->e, U+025E->e\
				, U+029A->e, U+1D07->e, U+1D08->e, U+1D31->e, U+1D32->e, U+1D49->e\
				, U+1D4B->e, U+1D4C->e, U+1D92->e, U+1D93->e, U+1D94->e, U+1D9F->e\
				, U+1E14->e, U+1E15->e, U+1E16->e, U+1E17->e, U+1E18->e, U+1E19->e\
				, U+1E1A->e, U+1E1B->e, U+1E1C->e, U+1E1D->e, U+1EB8->e, U+1EB9->e\
				, U+1EBA->e, U+1EBB->e, U+1EBC->e, U+1EBD->e, U+1EBE->e, U+1EBF->e\
				, U+1EC0->e, U+1EC1->e, U+1EC2->e, U+1EC3->e, U+1EC4->e, U+1EC5->e\
				, U+1EC6->e, U+1EC7->e, U+2091->e ,U+00CC->i, U+00CD->i, U+00CE->i\
				, U+00CF->i, U+00EC->i, U+00ED->i, U+00EE->i, U+00EF->i, U+010309->i\
				, U+0128->i, U+0129->i, U+012A->i, U+012B->i, U+012C->i, U+012D->i\
				, U+012E->i, U+012F->i, U+0130->i, U+0131->i, U+0197->i, U+01CF->i\
				, U+01D0->i, U+0208->i, U+0209->i, U+020A->i, U+020B->i, U+0268->i\
				, U+026A->i, U+040D->i, U+0418->i, U+0419->i, U+1E09->c, U+212D->c\
				, U+2184->c
	mlock = 1
	enable_star = 1
	expand_keywords = 1
	phrase_boundary = ., ?, !, U+2026 # horizontal ellipsis
	preopen = 1
	html_strip = 1
	html_index_attrs = img=alt,title; a=title;
	html_remove_elements    = style, script
	min_word_len = 2
	stopwords = /var/lib/sphinxsearch/data/stopwords_fr.txt
	morphology            = libstemmer_french
}

Create/update the index

The first time the command for the initialization of the index is:

sudo indexer --all

Next times, the command will be like this one:

sudo /usr/bin/indexer --rotate --config /etc/sphinxsearch/sphinx.conf --all

You can update the Makefile of the Pelican project by adding this directive:

update_sphinxsearch:
	@echo "Update Sphinxsearch index"
	sudo /usr/bin/indexer --rotate --config /etc/sphinxsearch/sphinx.conf --all

... and adding it to your favorite deployment directive with:

$(MAKE) update_sphinxsearch

Project details


Release history Release notifications | RSS feed

This version

1.1

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

pelican-sphinxsearch-1.1.tar.gz (6.8 kB view details)

Uploaded Source

File details

Details for the file pelican-sphinxsearch-1.1.tar.gz.

File metadata

  • Download URL: pelican-sphinxsearch-1.1.tar.gz
  • Upload date:
  • Size: 6.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.2.0 pkginfo/1.4.2 requests/2.22.0 setuptools/50.3.2 requests-toolbelt/0.8.0 tqdm/4.23.4 CPython/3.6.2

File hashes

Hashes for pelican-sphinxsearch-1.1.tar.gz
Algorithm Hash digest
SHA256 ef5e14d2b842fab030fea93ac8eb5f730b3dad980a553defa10b9358d557ec80
MD5 dd2fc2493a4d1014938a03d678f59ae9
BLAKE2b-256 cd82b9b3908548d75e3d2b3c3bef65667eb85249bf5f439bf5deb6e61dd9beb9

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page