我使用Sphinx为大量数据提供搜索网页,最近我将Sphinx从v2.1.8升级到v2.2.4
我在配置文件中遇到了一些问题,其中之一是"enable_star"选项已被删除,这影响了我的搜索页面中的预期结果,所以如果搜索"rea",在我完成键入"real"之前,它不会返回"real madrid",同样的问题出现在单词"马德里"结尾。
如果我搜索"疯狂"的预期结果:
- 皇家马德里
- 马德里竞技
- 疯狂鳄鱼
- Madila
- 疯狂的废话
在我的情况下,我得到了"疯狂的鳄鱼"answers"疯狂的布拉"。
这是我的配置文件的一部分:
docinfo = extern
mlock = 0
morphology = stem_en
min_word_len = 1
expand_keywords = 1
dict = keywords
PHP代码:
$_sphinx = new SphinxClient();
$_sphinx->SetServer('............', '....');
$_sphinx->SetMatchMode(SPH_MATCH_ANY);
$_sphinx->SetFieldWeights(array('auther_name' => 50));
$_sphinx->SetArrayResult(true);
$_sphinx->SetSortMode(SPH_SORT_EXTENDED2, 'cat_priority DESC, @weight DESC');
//////////////////
$_result = $_sphinx->Query($searchTerm . '*');
有人能找到这个吗。
您的索引上似乎没有min_prefix_len
设置,建议您添加它。
虽然不确定你的索引会如何工作,但作为min_prefix_len
,enable_star=0
需要有效果。
这应该让expand_keywords
发挥它的魔力。此时,建议从查询末尾删除*。这只会影响输入的最后一个单词,而且*应该通过expand_keywords
设置自动添加。