Sphinx找不到单词,但可以找到包含相同单词的短语

时间:2014-03-14 10:01:42

标签: php search sphinx

我遇到了使用sphinx配置的问题。

有关配置的数据:

Sphinx 2.1.2-id64-release (r4245)

sphinx.conf source&索引

source articles
{
    type                        = mysql
    sql_host                = localhost
    sql_user                = [x]
    sql_pass                = [x]
    sql_db                  = [x]
    sql_sock                = /var/run/mysqld/mysqld.sock

    sql_query = SELECT id, title, lead, body FROM articles
    sql_query_info      = SELECT * FROM articles WHERE id=$id
}

index articles
{

    source          = articles
    path            = /data/sphinx/var/data/articles
    docinfo         = extern
    mlock           = 0
    morphology      = none
    min_word_len        = 2
    charset_type        = utf-8
    charset_table         = 0..9, A..Z->a..z, _, a..z, U+410..U+42F->U+430..U+44F, U+430..U+44F, U+100->a,U+101->a,U+10C->c,U+10D->c,U+112->e,U+113->e,U+122->g,U+123->g,U+12A->i,U+12B->i,U+136->k,U+137->k,U+13B->l,U+13C->l,U+145->n,U+146->n,U+160->s,U+161->s,U+16A->u,U+16B->u,U+17D->z,U+17E->z
    min_prefix_len  = 2
    enable_star     = 1
    html_strip              = 1

}

调用sphinx客户端的PHP如下所示:

$s = new SphinxClient;
$s->setServer("localhost", 3312);
echo $s->getLastError();
$s->setMatchMode(SPH_MATCH_ANY);
$s->setMaxQueryTime(3000);
$result['articles'] = $s->query($s->escapeString($_GET['s']), 'articles');

sphinx配置似乎正常工作,查询和sphinx日志不会显示任何错误。 在输出PHP脚本中,我也有这个调用,它也没有输出。 并且使用E_ALL没有其他PHP错误。

echo $s->getLastError();

现在,让我们假设有一篇文章标题为A B(C D E),每个字母都是一个单词。 以下所有查询都将该文章作为列表中的第4个结果:

A B (C D E)
A B (C D
A B (C
A B
A

与此同时,以下所有内容根本找不到文章:

   B (C D E)
   B (C D
   B (C
   B
    *B
    *B*

这是狮身人面像的特色吗? 我似乎无法提及它应该像这样工作,即无法按句子的部分搜索 有没有办法改变这种行为?
我查看了文档中的匹配模式并尝试了SPH_MATCH_EXTENDED,但结果更糟。

谢谢!

1 个答案:

答案 0 :(得分:0)

绝对可以做你想做的事。我去年在一个项目中做到了。 尝试“min_infix_len”这里是文档:http://sphinxsearch.com/docs/archives/1.10/conf-min-infix-len.html

这应该启用您想要的功能。搜索eg.g.在文中“我在柏林的时候我” 柏林这个词。

玩得开心