与狮身人面像有一些奇怪的问题。
以下是查询日志:
[Mon Jan 31 05:43:21.362 2011] 0.158 sec [any/0/ext 511 (0,2000)] [_file] superman
[Mon Jan 31 05:43:51.739 2011] 0.143 sec [any/0/ext 952 (0,2000)] [_file] superman
[Mon Jan 31 05:44:22.042 2011] 0.003 sec [any/0/ext 952 (0,2000)] [_file] superman
[Mon Jan 31 05:44:52.313 2011] 0.003 sec [any/0/ext 952 (0,2000)] [_file] superman
[Mon Jan 31 05:45:22.553 2011] 0.003 sec [any/0/ext 952 (0,2000)] [_file] superman
如果你看到,第一次返回的结果是511,其余的是952(正确的结果)。我尝试用不同的结果进行搜索,但似乎都是一样的。
一些观察:
1)如果小于511,则返回的结果始终正确。只有当结果是> 511并且小于它错误的最大值。
2)如果结果多于max,则返回的结果为max(正确)。
3)其余的结果通常是正确的,直到sphinx db重新索引为止。然后我们会再次获得511。
在不同的sphinx安装上尝试,得到相同的结果。
我的客户端代码:
$cl->setServer("localhost", 3312);
$cl->setMaxQueryTime(10);
$cl->SetLimits(0, 2000, 2000);
$cl->setMatchMode(SPH_MATCH_ANY);
call_user_func_array(array($cl, 'setSortMode'), array(SPH_SORT_EXTENDED, '@id DESC'));
$result = $cl->query('superman', '_file');
sphinx.conf中:
index download_file
{
source = file
path = /disk1/data/sphinx/file
morphology = stem_en
enable_star=1
min_word_len = 3
min_prefix_len = 0
min_infix_len = 3
}
searchd
{
max_matches = 100000
port = 3312
log = /var/log/searchd/searchd.log
query_log = /var/log/searchd/query.log
pid_file = /var/log/searchd/searchd.pid
}
indexer
{
max_iops = 40
mem_limit = 128M
}