Ok this is third and probably the last part about sphinx search engine.
So I'm gonna show how to use sphinx api with php.
I'm gonna use the same database as in previous tutorials (articles)
mysql> select * from articles;
+------------+------------------------+-----------------------------------------+---------+
| id_article | title | content | ratings |
+------------+------------------------+-----------------------------------------+---------+
| 1 | Euro 2012 in Poland | some content about euro 2012 | 5 |
| 2 | Second article | bla dog cat house | 2 |
| 3 | Euro 2012 last results | Poland loses to czech republic | 4 |
| 4 | Fourth article | lorem ipsum black yellow red blue green | 1 |
+------------+------------------------+-----------------------------------------+---------+
and config :
sudo vim /etc/sphinxsearch/articles.conf
source src_articles
{
type = mysql
sql_host = localhost
sql_user = root
sql_pass = krzysiek2000
sql_db = test
sql_attr_uint = ratings
sql_query = select id_article,title,content,ratings from test.articles;
sql_query_info = select id_article,title,content,ratings
from test.articles where id_article = $id;
}
index index_articles
{
source = src_articles
path = /var/lib/sphinxsearch/data/index_articles
docinfo = extern
charset_type = utf-8
}
indexer
{
mem_limit = 32m
}
searchd
{
port = 3312
log = /var/log/searchd/searchd.log
query_log = /var/log/searchd/query.log
pid_file = /var/log/searchd/searchd.pid
}
First index data:
indexer -c /etc/sphinxsearch/articles.conf index_articles
Let's start the searchd deamon
sudo searchd -c /etc/sphinxsearch/articles.conf
Check is it working :
ps aux | grep search
root 4366 0.0 0.0 14384 1020 pts/1 S 23:37 0:00 searchd -c /etc/sphinxsearch/articles.conf
Great, so quick test :
search -c /etc/sphinxsearch/articles.conf Poland
displaying matches:
1. document=1, weight=1557, ratings=5
id_article=1
title=Euro 2012 in Poland
content=some content about euro 2012
ratings=5
2. document=3, weight=1557, ratings=4
id_article=3
title=Euro 2012 last results
content=Poland loses to czech republic
ratings=4
Everything seems to be fine ;)
So now let's do the same search but we gonna use php
Use can find sphinxapi.php file on offical site http://sphinxsearch.com/downloads/release/
Just download the source package. There is also api to ruby,python and java.
SetServer('localhost', 3312);
$client->SetConnectTimeout(1);
$client->SetArrayResult(true);
// Query the index
$results = $client->Query('Poland');
//output the result
print_r($results['matches']);
?>
php articles.php
Array
(
[0] => Array
(
[id] => 1
[weight] => 1
[attrs] => Array
(
[ratings] => 5
)
)
[1] => Array
(
[id] => 3
[weight] => 1
[attrs] => Array
(
[ratings] => 4
)
)
)
Perfect ! So now when we have the results we can foreach on array to get details data
foreach($results['matches'] as $i=>$arr){
$id_article = $arr['id'];
//select data about specific article
}
And that's all
Of course what I show is just a little percentage of what offers you sphinx.
If you are interested in the topic, ask uncle google about more information ; )