Php 斯芬克斯返回了错误的匹配数量

Php 斯芬克斯返回了错误的匹配数量,php,mysql,search,sphinx,Php,Mysql,Search,Sphinx,我有一个MySql数据库,其中有一个名为“table”的表 该表有两个字段:ID(自动递增主键)和field(varchar) 网站通过搜索栏访问数据库,搜索栏向php发送ajax调用,然后php查询sphinx: // Sphinx Query $sphinx = new SphinxClient(); $sphinx_index = 'index_field'; $mode = SPH_MATCH_BOOLEAN; $sphin

我有一个MySql数据库,其中有一个名为“table”的表

该表有两个字段:ID(自动递增主键)和field(varchar)

网站通过搜索栏访问数据库,搜索栏向php发送ajax调用,然后php查询sphinx:

// Sphinx Query
        $sphinx = new SphinxClient();
        $sphinx_index = 'index_field';
        $mode = SPH_MATCH_BOOLEAN;
        $sphinx->SetServer("127.0.0.1", 122381);
        $sphinx->setLimits(0,1000); // max search results sphinx can return
        $sphinx->setMaxQueryTime(5000); // 5 seconds || 5000 milliseconds
        $sphinx->setMatchMode($mode);
        $sphinx->setFieldWeights(array('name' => 100));
        $sphinx->setArrayResult(true);
        $res = $sphinx->query($searchString,$sphinx_index);
在测试时,我发现查询
$searchString='target'返回614个结果

当我转到MySql命令行并键入:
selectcount(*)fromtablewherefield='target'它返回624个结果

这一点都不好

这是斯芬克斯的资料来源:

source src_field
{
    # data source type. mandatory, no default value
    # known types are 'mysql', 'pgsql', 'xmlpipe', 'xmlpipe2'
    type                    = mysql

    #####################################################################
    ## SQL settings (for 'mysql' and 'pgsql' types)
    #####################################################################

    # some straightforward parameters for SQL source types
    sql_host                = localhost
    sql_user                = root
    sql_pass                = NotForYouToKnow
    sql_db                  = myDatabase
    sql_port                = 3306  # optional, default is 3306

    sql_query               = \
        SELECT a.ID AS ID, a.field AS field FROM table AS a;

    sql_ranged_throttle = 0

    sql_query_info      = SELECT a.ID AS ID, a.field AS field FROM table AS a WHERE a.ID=$ID;
} 
这是斯芬克斯指数:

index index_field
{
    # document source(s) to index
    # multi-value, mandatory
    # document IDs must be globally unique across all sources
    source          = src_field

    path            = C:\sphinx\data\index_field

    docinfo         = extern

    mlock           = 0

    morphology      = none

    min_word_len        = 1

    charset_type        = sbcs

    html_strip              = 0

        min_infix_len       = 2

        enable_star     = 1
}
我不知道为什么它会返回几乎正确数量的数据,但不是全部

Sphinx吐出的数组长度:
count($res)=614


有什么想法吗?

是“target”实际查询,还是更复杂的可能是多词查询?@barryhunter实际查询是单词查询。但对于这个例子,我说的是“target”,那么您的实际查询是什么呢?提供例子是没有帮助的。这可能是问题中的某个特定问题。例如,如果其包含重音符号,则可能是字符集问题。只是猜测而已。也许可以尝试从二进制字段='target'所在的表中选择count(*)
@barryhunter刚刚尝试了
从二进制字段='target'所在的表中选择count(*)返回的是相同的
624
@barryhunter计数,我现在认为这是因为我使用了一个非常旧的斯芬克斯版本。我将尝试更新我的狮身人面像版本,看看它是否有什么不同。