Skip to main content

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

Metadata

Release files for pelican-sphinxsearch 1.1

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for pelican-sphinxsearch 1.1
File Size Uploaded
pelican-sphinxsearch-1.1.tar.gz 6.8 kB Details

Release files / pelican-sphinxsearch-1.1.tar.gz

Download URL pelican-sphinxsearch-1.1.tar.gz
Size 6.8 kB
Tags Source
SHA-256 checksum
How to use checksums
ef5e14d2b842fab030fea93ac8eb5f730b3dad980a553defa10b9358d557ec80
BLAKE2b-256 checksum
How to use checksums
cd82b9b3908548d75e3d2b3c3bef65667eb85249bf5f439bf5deb6e61dd9beb9
Upload date
Uploaded using Trusted Publishing?
What is 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

Release history Release notifications | RSS feed

This release

1.1 This release

1 release file

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page