我遇到了使用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,但结果更糟。
谢谢!
答案 0 :(得分:0)
绝对可以做你想做的事。我去年在一个项目中做到了。 尝试“min_infix_len”这里是文档:http://sphinxsearch.com/docs/archives/1.10/conf-min-infix-len.html
这应该启用您想要的功能。搜索eg.g.在文中“我在柏林的时候我” 柏林这个词。
玩得开心