在Sphinx中启用部分单词匹配?

时间:2014-06-24 13:36:19

标签: php sphinx

我是Sphinx的新手,我正在尝试正确配置它。我希望允许所有搜索的部分单词匹配,并且不希望用户必须自己键入通配符。

我希望搜索在亚马逊或谷歌上运行,如果你开始输入一个单词,建议就会出现。因此,例如,如果有人输入“x”,那么应该出现像“Xbox”这样的匹配。

以下是我目前的索引设置:

min_word_len   = 1
min_prefix_len = 1
prefix_fields = name
charset_type = utf-8

在PHP方面,我正在使用SPH_MATCH_EXTENDED2SPH_SORT_RELEVANCE。无论是什么,我都将排名模式保留为默认模式。当我根据反复试验更改设置时,这些设置似乎提供了最佳搜索结果。

我在这里和其他网站上已经阅读了类似的问题,但答案似乎总是引用文档中所说的enable_star

所以我的问题是,如何在Sphinx中启用部分单词匹配?我应该简单地将*附加到用户查询中的每个单词,做这样的事情吗?

$search = str_replace(' ', '* ', trim($search)) + '*';

1 个答案:

答案 0 :(得分:6)

您可以将expand_keywords = 1设为described in the docs

它实际上只是为你自动添加星星 - 一般来说,精确匹配的排名会略高于纯'部分'匹配。