Description: “Sphinx is a full-text search engine, distributed under GPL version 2. Commercial license is also available for embedded use. Generally, it’s a standalone search engine, meant to provide fast, size-efficient and relevant fulltext search functions to other applications. Sphinx was specially designed to integrate well with SQL databases and scripting languages. Currently built-in data sources support fetching data either via direct connection to MySQL or PostgreSQL, or using XML pipe mechanism (a pipe to indexer in special XML-based format which Sphinx recognizes). As for the name, Sphinx is an acronym which is officially decoded as SQL Phrase Index. Yes, I know about CMU’s Sphinx project“.
* Install the packages needed: apt-get install gcc make libmysqlclient15-dev libmysql++-dev * Download Sphinx from here. * Decompress it: tar xvfz sphinx-*.tar.gz * Enter its directory: cd sphinx-* * Run configure: ./configure --prefix=/usr/local/sphinx --with-mysql * Compile Sphinx: make * Install Sphinx (as root): make install
* Enter Sphinx’s directory: cd /usr/local/sphinx/etc * Make a copy of its default configuration: cp sphinx.conf.dist sphinx.conf * Modify it to fit you database schema and preferences (I recommend reading Sphinx’s official documentation and this tutorial by IBM first). * Create all indexes: /usr/local/sphinx/bin/indexer --all * Something like this will be shown: Sphinx 0.9.9-rc2 (r1785) Copyright (c) 2001-2009, Andrew Aksyonoff using config file '/usr/local/sphinx/etc/sphinx.conf'... indexing index 'software'... collected 10 docs, 0.0 MB sorted 0.0 Mhits, 100.0% done total 10 docs, 649 bytes total 0.013 sec, 48970 bytes/sec, 754.54 docs/sec total 2 reads, 0.000 sec, 16.3 kb/call avg, 0.0 msec/call avg total 5 writes, 0.000 sec, 0.4 kb/call avg, 0.0 msec/call avg
* You can perform a basic search using: /usr/local/sphinx/bin/search desired_word . It matches all words by default, but you can change this behaviour. Run /usr/local/sphinx/bin/search without arguments to show the available options.
* Example: /usr/local/sphinx/bin/search samba
Sphinx 0.9.9-rc2 (r1785)
Copyright (c) 2001-2009, Andrew Aksyonoff
using config file ‘/usr/local/sphinx/etc/sphinx.conf’…
index ‘software': query ‘samba ‘: returned 1 matches of 1 total in 0.000 sec
1. document=10, weight=2
description=Samba is a SMB/CIFS file, print, and login server. It seamlessly integrates Linux/Unix Servers and Desktops into Active Directory environments using the Winbind daemon.
1. ‘samba': 1 documents, 2 hits
The use of /usr/local/sphinx/bin/search is just for test and debugging purposes. There are native API ports for PHP, Python, Java, Perl, and Ruby. I will explain the integration between PHP and Sphinx on another post.