有个搜索业务,要全匹配,而且要按照关键词左全匹配排序,例如 搜索 “本人” 字,假设有3条记录分别是 :你爱本人,本人爱你,爱本人所爱,那这个顺序应该是 本人爱你,爱本人所爱,你爱本人,本人目前用的sql语句如下:
select *, case when nickname like “%本人%” then POSITION(“本人” in nickname ) end as namematch from `customer` where `nickname` like “%本人%” order by `namematch`.
这种语句没办法用到索引,用sphinx或其他什么搜索引擎能解决这个问题吗?sphinx貌似不能这样配置
select *, case when nickname like “%本人%” then POSITION(“本人” in nickname ) end as namematch from `customer` where `nickname` like “%本人%” order by `namematch`.
这种语句没办法用到索引,用sphinx或其他什么搜索引擎能解决这个问题吗?sphinx貌似不能这样配置
解决方案
25
elasticsearch
25
sphinx 应该可以支持中文全文搜索啊。 不要用LIKE,用AGAINST,详细请直接参考MYSQL官方免费手册。