0
votes

I've got a problem with sphinx configuration and php api use (on Windows 7).

I've configured the indexer : indexer --config sphinx.conf test1 And launch the service : searchd --install --config sphinx.conf When I made a search with the cmd console, I found results, but... not with the php api.

Here the error : Query failed: failed to read searchd response (status=2613, ver=11830, len=774976045, read=70).

Here my conf file :

#
# Minimal Sphinx configuration sample (clean, simple, functional)
#

source src1
{
type            = mysql

sql_host        = localhost
sql_user        = root      
sql_pass        =
sql_db          = test
sql_port        = 3306  # optional, default is 3306

sql_query       = \
    SELECT id, UNIX_TIMESTAMP(addTime) AS addTime, title, brand, material, size, description, c.name as categoryName \
    FROM test \
    JOIN category c ON c.id = advert.categoryId


sql_attr_uint       = id
sql_attr_timestamp  = addTime

sql_query_info      = SELECT * FROM test WHERE id=$id
}


index catalog 
{
source          = src1
path            = C:\wamp\www\sphinx\catalog
docinfo         = extern
charset_type    = utf-8


min_word_len            = 3
min_prefix_len          = 0
min_infix_len           = 3
}

indexer
{
mem_limit       = 32M
}


searchd
{
listen          = 9312
listen          = 9306:mysql41
log             = C:\wamp\www\sphinx\log\searchd.log
query_log       = C:\wamp\www\sphinx\log\query.log
read_timeout        = 5
max_children        = 30
pid_file        = C:\wamp\www\sphinx\log\searchd.pid
max_matches     = 1000
seamless_rotate     = 1
preopen_indexes     = 1
unlink_old      = 1
workers         = threads # for RT to work
binlog_path     = C:\wamp\www\sphinx\data
}

The php file :

<?php
include('sphinxapi.php');

//Sphinx
$s = new SphinxClient;
$s->setServer("localhost", 3306);
$s->setMatchMode(SPH_MATCH_EXTENDED2);

$result = $s->query("@title jean");

if ($result['total'] > 0) {
foreach ($result['matches'] as $id => $otherStuff) {
        echo $id;
}
} else {
echo "Query failed: " . $s->GetLastError() . ".\n";  
}

?>

2

2 Answers

2
votes

You are pointed in php script 3306 - it's port of mysql server in line:

$s->setServer("localhost", 3306);

try to point port 9312

Also try do following steps:

  1. Remove installed windows service.

    searchd --delete

  2. Install windows service with full path to the configuration file

    searchd --install --config fullPathToSphinx.conf

  3. You need to run service manually or restart PC. To start manually service: run from command line program services.msc and find in the services list searchd and start it.

1
votes

don't use "localhost" on Windows.

$s->setServer("127.0.0.1", 9312);