关于多个关键词在MYSQL数据库中模糊匹配的方法 5C

MYSQL 数据中有个文本字段maintext包含一段文章,现在我要进行关键词搜索
“PYTHON 程序员 能力”,希望优先返回包含“PYTHON程序员能力”类似的字段
也就是多个关键词靠的越近排名越靠前。求支招。

5个回答

给数据库连接加个分词器插件
可以用elasticsearch或ik
ik比较简单点,使用方法百度上都有

qq_36911145
封印di恶魔 回复sunking1: 具体的只能百度上查了,es这些的分词器有一定的词库,一些文字会被视为词语,一些会视为单个字,分词规则也能自定义
5 个月之前 回复
sunking1
sunking1 sunking1 已经安装ES,但是对于,如何搜索“PYTHON 程序员 能力”然后类似于百度按照这几个关键字紧密程度排序,不知道这个查询如何构造,小白入门希望指教
5 个月之前 回复

select *
from(
select

column1,column2,...
case when instr(maintext字段,'PYTHON')>0 then 1 else 0 end +
case when instr(maintext字段,'程序员')>0 then 1 else 0 end +
case when instr(maintext字段,'能力')>0 then 1 else 0 end +
case when instr(maintext字段,'PYTHON程序员能力')>0 then 999 else 0 end num
from table
) aa order by aa.num desc;
大概思路,提取关键字一步可以自己切割一下

sunking1
sunking1 如果关键词不只4个 如何动态组合SQL语句呢?逻辑好像比较复杂了。
5 个月之前 回复
sunking1
sunking1 现在想到的是通过正则表达式计算单词之间间隔的字数。 PYTHON(REXPword Count1)程序员 (REXP word Count2)能力 order by REXPwordCount1+REXPwordCount2+。。。。但是不知道怎么实现,求支招
5 个月之前 回复

用locate函数查出关键词在字段中位置,然后再根据位置的差来排序吧

我也感觉你说的情况用elasticsearch会简单点,如果后续需求很多这种类似搜索业务,就更要选择es了

sunking1
sunking1 已经搞定了直接用match即可,但是如何精确匹配和去重有成了一个问题。请大神指教
5 个月之前 回复
sunking1
sunking1 已经安装ES,但是对于,如何搜索“PYTHON 程序员 能力”然后类似于百度按照这几个关键字紧密程度排序,不知道这个查询如何构造,小白入门希望指教
5 个月之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问
相关内容推荐