Open main menu

Extension:SphinxSearch/Search suggestions

Latest SVN build has improved search suggestions for SphinxMWSearch - using enchant library and a script that creates a "dictionary" based on the frequency of words in your wiki (so it will never suggest a word that is not actually in the wiki.) I decided to use enchant because direct support for aspell/pspell is being dropped from PHP (at least on Windows) and I could not even install them on my box with php 5.3.

To try it, install enchant, run SphinxSearch_setup.php to create a dictionary, and set $wgSphinxSuggestMode to 'enchant'. Without enchant, you can set $wgSphinxSuggestMode to 'soundex' and it will use mysql's SOUNDEX to find wiki articles that sound similar to the search query. Svemir Brkic 15:35, 14 November 2010 (UTC)

Old method is currently still supported, but only via aspell binary, not via pspell extension. Set $wgSphinxSuggestMode to 'aspell' for that. Svemir Brkic 18:49, 7 September 2011 (UTC)

EnchantEdit

Enchant is a library that provides a generic interface to third-party spell-checking APIs developed by AbiWord.

$wgSphinxSuggestMode = 'enchant';

Create a dictionaryEdit

Execute SphinxSearch_setup.php to create necessary dictionary files sphinx.dic and sphinx.aff.

Using Enchant with PHP on LinuxEdit

You will need to install the php-enchant library package and restart the httpd service to have SphixSearch begin using this feature.

Using Enchant with PHP on WindowsEdit

See information about Using Enchant with PHP on Windows

SoundexEdit

According to Wikipedia, soundex is a phonetic algorithm for indexing names by sound. MySQL[1] uses soundex as function to determine and compare two strings that sound almost the same and should return identical soundex strings.

$wgSphinxSuggestMode = 'soundex';

AspellEdit

$wgSphinxSuggestMode = 'aspell';

When using the personal dictionary, it is not just a list of words. It needs to have a header line. http://aspell.net/man-html/Format-of-the-Personal-and-Replacement-Dictionaries.html

For example:

personal_ws-1.1 en 0
AwesomeCompanyName
quasirhombicosidodecahedron

This could be a sample Windows aspell configuration:

$wgSphinxSuggestMode = 'aspell';
$wgSphinxSearchAspellPath = "C:\Program Files\Aspell\bin\aspell.exe";
$wgSphinxSearchPersonalDictionary = "D:\Inetpub\web\wiki\sphinx\CustomWords.en.pws";