How to Install Sphinx on LINUX(ubuntu)

Raja picture Raja · Jan 18, 2012 · Viewed 11.5k times · Source

This is Raja, I'm using PHP for my web development. Recently i was supposed to install "Sphinx" search into my application with LINUX as OS.

I've followed the instruction given in this website

http://www.howtoforge.com/how-to-install-sphinx-on-ubuntu-10.10

to install sphinx in LINUX(Ubuntu) OS and I've tested the application in the terminal, i got the results like this

root@dev2:/# search "test"
Sphinx 0.9.9-release (r2117)
Copyright (c) 2001-2009, Andrew Aksyonoff

using config file '/etc/sphinxsearch/sphinx.conf'...
index 'test1': query 'test ': returned 3 matches of 3 total in 0.000 sec

displaying matches:
1. document=1, weight=2, group_id=1, date_added=Thu Jan  5 18:18:55 2012
        id=1
        group_id=1
        group_id2=5
        date_added=2012-01-05 18:18:55
        title=test one
        content=this is my test document number one. also checking search within phrases.
2. document=2, weight=2, group_id=1, date_added=Thu Jan  5 18:18:55 2012
        id=2
        group_id=1
        group_id2=6
        date_added=2012-01-05 18:18:55
        title=test two
        content=this is my test document number two
3. document=4, weight=1, group_id=2, date_added=Thu Jan  5 18:18:55 2012
        id=4
        group_id=2
        group_id2=8
        date_added=2012-01-05 18:18:55
        title=doc number four
        content=this is to test groups

words:
1. 'test': 3 documents, 5 hits

The Problem is that, I've created the directory in the location "/var/www/sphinx_search", which contains sphinx.conf, sphinxapi.php and test.php files.

the code behind sphinx.conf is

source src1
{
    type = mysql
    sql_host = localhost
    sql_user = user
    sql_pass = pwd
    sql_db = test
    sql_port = 3306 # optional, default is 3306
    sql_query = \
    SELECT id, group_id, UNIX_TIMESTAMP(date_added) AS date_added, title, content \
    FROM documents
    sql_attr_uint = group_id
    sql_attr_timestamp = date_added
    sql_query_info = SELECT * FROM documents WHERE id=$id
}

index test1
{
    source = src1
    path = /var/lib/sphinxsearch/data/test1
    docinfo = extern
    charset_type = sbcs
}

indexer
{
    mem_limit = 32M
}

searchd
{
    port = 9312
    log = /var/log/sphinxsearch/searchd.log
    query_log = /var/log/sphinxsearch/query.log
    read_timeout = 5
    max_children = 30
    pid_file = /var/run/searchd.pid
    max_matches = 1000
    seamless_rotate = 1
    preopen_indexes = 0
    unlink_old = 1
}

and the code behind test.php is

require_once('sphinxapi.php');
//require_once('api/sphinxapi.php');
$s = new SphinxClient;
$s->setServer("123.123.123.123", 9312); // NOT "localhost" under Windows 7!
$s->setMatchMode(SPH_MATCH_EXTENDED2);

$result = $s->Query("group");

echo '<pre>';print_r($result);

when i'm trying to run this application in browser (http://localhost/Raja/search_engine/sphinx/) this error is getting displayed.

{"status":"failed","status_message":"connection to localhost:9312 failed (errno=10060, msg=A connection attempt failed because the connected party did not properly respond after a period of time, or established connection failed because connected host has failed to respond.)"}

As i'm new to Sphinx, i cant get it right away. Can anybody help me to proceed further.

Curiously looking for a solution earlier,

Thanks in Advance, Raja.

Answer

Iaroslav Vorozhko picture Iaroslav Vorozhko · Jan 18, 2012

In your example with search you using search utility which don't require searchd daemon to be running. That's why search is executed successfully.

To use sphinx API you need to start searchd daemon, like:

/path/to/searchd --config /etc/sphinxsearch/sphinx.conf

If you installed sphinx using apt-get then try:

searchd --config /etc/sphinxsearch/sphinx.conf

After that you could try application in browser.

But, I don't understand this

$s->setServer("123.123.123.123", 9312); // NOT "localhost" under Windows 7!

You said you running sphinx under ubuntu, not windows 7. So, sphinx server IP should be IP of ubuntu host, not localhost.

BTW, ubuntu ship old version of Sphinx, I would recommend to download latest from sphinxsearch.com. Latest version is 2.0.3