狮身人面像不一致的结果

时间:2011-01-31 10:56:19

标签: sphinx

与狮身人面像有一些奇怪的问题。

以下是查询日志

[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
}

0 个答案:

没有答案