用sphinx实现mysql的like(模糊)查询方法

本文介绍了如何通过Sphinx配置实现MySQL的LIKE模糊查询。通过设置enable_star为1开启通配符,调整min_prefix_len和min_infix_len以达到期望的搜索效果。示例代码展示了如何在PHP中实现类似于LIKE '%beef%'的查询。
摘要由CSDN通过智能技术生成

默认情况下, 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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值