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

Nat*_*ate 7 php sphinx

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

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

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

min_word_len   = 1
min_prefix_len = 1
prefix_fields = name
charset_type = utf-8
Run Code Online (Sandbox Code Playgroud)

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

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

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

$search = str_replace(' ', '* ', trim($search)) + '*';
Run Code Online (Sandbox Code Playgroud)

bar*_*ter 7

您可以expand_keywords = 1按照文档中的说明进行设置.

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