默认情况下, sphinx搜索是按照完全匹配来的,比如搜索 beef这个单词,那么只有数据经过分词后完完全全等于beef这个单词的才会查询出来。
事例:
数据1:I like to eat beef
数据2:I want to buy a lot of beefs
搜索关键词:beef
结果只有数据1被查询出来,而我们想要的效果是数据2也被查询出来,那么我们需要怎么做呢?
解决方法
步骤1:在sphinx.conf配置文件找到对应的索引增加以下项(根据个人需求选择)
1.首先开启通配符
enable_star = 1
2.最小前缀索引(根据自己需求选择)
min_prefix_len
可选选项,默认为0(不索引前缀)。
前缀索引使实现“wordstart*”形式的通配符成为可能(通配符语法的细节请参考enable_star
选项)。当最小前缀长度被设置为正值,indexer除了关键字本身还会索引所有可能的前缀
(即词的开头部分)。太短的前缀(小于允许的最小值)不会被索引。
例如,在min_prefix_len=3设置下索引关键字“example”会导致产生5个索引项“exa”,
“exam”, “examp”, “exampl”和该词本身。对这个索引搜索“exam”会得到包含“example”的文
档,即使该文档中没有“exam”自身。然而,前缀索引会使索引体积急剧增大(因为待索引
关键字增多了很多),而且索引和搜索的时间皆会恶化。
在前缀索引中没有自动的办法可以提高精确匹配&#x