我是Sphinx的新手,我正在尝试正确配置它。我希望允许所有搜索的部分单词匹配,并且不希望用户必须自己键入通配符。
我希望搜索在亚马逊或谷歌上运行,如果你开始输入一个单词,建议就会出现。因此,例如,如果有人输入“x”,那么应该出现像“Xbox”这样的匹配。
以下是我目前的索引设置:
min_word_len = 1
min_prefix_len = 1
prefix_fields = name
charset_type = utf-8
在PHP方面,我正在使用SPH_MATCH_EXTENDED2
和SPH_SORT_RELEVANCE
。无论是什么,我都将排名模式保留为默认模式。当我根据反复试验更改设置时,这些设置似乎提供了最佳搜索结果。
我在这里和其他网站上已经阅读了类似的问题,但答案似乎总是引用文档中所说的enable_star
。
所以我的问题是,如何在Sphinx中启用部分单词匹配?我应该简单地将*
附加到用户查询中的每个单词,做这样的事情吗?
$search = str_replace(' ', '* ', trim($search)) + '*';
答案 0 :(得分:6)
您可以将expand_keywords = 1
设为described in the docs。
它实际上只是为你自动添加星星 - 一般来说,精确匹配的排名会略高于纯'部分'匹配。