首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用MySQL进行最相关的搜索?

如何使用MySQL进行最相关的搜索?
EN

Stack Overflow用户
提问于 2020-09-12 17:53:01
回答 1查看 37关注 0票数 1

我想根据它与MySQL的相关性做一个搜索。不管我做了什么,我都不能成功。我做了一个全文搜索,我做了一个类似的搜索,再次我不能做下面的顺序。

例如,搜索单词:"first second

First Second关键字-> (完整单词)将以开头

关键字First Second关键字-> (完整单词)位于中间或结尾

Firstsecond关键字-> (相邻单词)将以开头

关键字Firstsecond关键字-> (相邻词)位于中间或结尾

First关键字-> (只有第一个单词)将以开头

关键字First关键字-> (仅为第一个单词)位于中间或结尾

Second关键字-> (只有第二个单词)将以开头

关键字Second关键字-> (只有第二个单词)在中间或结尾

然后我希望它继续如下;(所有这些)

第一个asdasd关键字

关键字asdasd第一个关键字

关键词asdasdfirstasdasd关键字

Secondasdasd关键字

关键词asdasdsecond关键字

关键词asdasdsecondasdasd关键字

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-09-12 18:04:43

是的,全文是不会做这种搜索的。是以文字为导向的。

您想要的不是真正简单的SQL。我想你想要这样的东西击中第一个关键字。

代码语言:javascript
复制
SET @match := 'first'
SELECT MIN(priority) priority, value
  FROM (
      SELECT 1 priority, value FROM tbl WHERE value LIKE CONCAT(@match, ' %')
       UNION ALL
      SELECT 2 priority, value FROM tbl WHERE value LIKE CONCAT('% ', @match, ' %')
       UNION ALL
      SELECT 3 priority, value FROM tbl WHERE value LIKE CONCAT('%', @match, '%')
  ) results
 GROUP BY value
 ORDER BY MIN(priority), value;

通常,您使用UNIONed系列的SELECT,其中包含对全词和嵌入式word匹配的优先级,并对每一行采用最低优先级匹配。

您需要详细说明处理这两个关键字的一般模式。这看起来可能会变成一个真正的疼痛,在xxx脖子,以得到正确。LIKE '%something'搜索术语意味着搜索速度不会很快。

如果您要进行大规模的研究,那么可能值得对狮身人面像进行研究。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63863282

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档