一种可以实现搜索结果按照相似度排序的sql写法,核心是 分词和order by like 的使用

发布时间 2023-12-16 16:46:26作者: smxjue

常规的搜索一般使用like执行模糊搜索,这种搜索有个缺陷,一旦搜索内容里面有一个错的就会导致搜索失败。

有没有一种实现可以容错的且按照相似度排序的方法呢?类似百度 google那样的。

经过自己的测试发现使用分词结合排序的order by like 可以实现。

我直接给出例子sql的吧  

比如搜索内容表content 里面的标题title  分词是 php 和 数组  

select  * FROM content   where title  like '%php%'  or title  like '%数组%'  order by  ( 1+(title like '%php%' )  + ( title like '%数组%' )  ) desc 

最终排序是按照like的值相加的结果来排序,也就是相似值叠的越大越靠前。

至于如何给搜索内容分词,可以使用专门的分词类 或者直接按字和空格拆分也可以。