当前位置: 首页 > 知识库问答 >
问题:

mysql全文搜索中给定查询字符串的不同组合的精确单词匹配

诸葛康胜
2023-03-14

如何使myisam表返回与不同单词组合匹配的结果,而不需要从给定的搜索字符串中获得更多内容。

我在标签表上使用以下查询

SELECT * FROM tags WHERE MATCH (name) AGAINST('word1 word2'));

该表可能包含如下行

  • 1字1字2字3

我只需要以下行作为结果

  • 3字1

但我得到的实际结果是

  • 1字1字2字3

如何实现这一点??

我曾尝试过布尔模式搜索,但它使给定的单词在搜索结果中成为强制性的,这不是我想要的。

共有2个答案

阎唯
2023-03-14

我不认为mysql全文支持你想要的。我只能做你想做的事

SELECT * 
FROM tags 
where (name LIKE 'word1' OR name LIKE 'word2' OR name LIKE 'word1 word2' or name LIKE 'word2 word1') ;

在这里阅读全文mysql全文

丁韬
2023-03-14

这可能是一个延迟的回复,但这将解决问题。使用MySQL FTS的IN BOOLEAN MODE

SELECT * FROM `tags` WHERE MATCH (`name`) AGAINST('+word1 +word2' IN BOOLEAN MODE)

看看全文布尔模式

注意:在实现这个特性时,MySQL使用了有时被称为隐含布尔逻辑的东西,其中

代表和

-表示不

[无运算符]暗示OR

 类似资料:
  • 我希望与字段中的字符串完全匹配,然后返回一天,提取所有此类记录。我所使用的json似乎也与简单的单词相匹配。我不确定我哪里出了问题。我需要向这个查询JSON添加吗?我目前拥有的JSON如下所示:

  • 问题内容: 经过多次尝试和多次搜索,我遇到了以下查询: 我使用此查询在包含音乐课程的大量页面中进行搜索。它相当不错。页面根据与查询的匹配程度获得得分。 除非用户搜索“ C Chord”或“ Am Chord”之类的内容,否则第一部分将被忽略。如果我搜索“ A和弦”或“ E和弦”,则称为“ C和弦”的页面始终位于顶部。 所以..我的问题的第1部分是:我该如何解决? 然后是第2部分。是否有可能使“标题

  • 问题内容: 我正在发送此请求 我得到正确的结果 但是当我想按单词部分搜索时,例如 我没有得到任何结果: 我究竟做错了什么? 问题答案: 这是因为您的字段可能已由标准分析器(默认设置)进行了分析,并且标题已被标记为三个标记,并且。 为了搜索单词的任何子串,您需要创建一个自定义分析器,该分析器利用ngram令牌过滤器来索引每个令牌的所有子串。 您可以这样创建索引: 然后,您可以重新索引数据。这将使标题

  • 我有像这样的字符串: (或) 我想看看这个字符串是否有单词“place”。 如果它们是我使用的字符串中的单词,则包含("place")。因为这是所有一个字符串,我尝试拆分但它给出了语法错误。你能让我知道如何获取它吗?

  • 问题内容: 我正在执行模糊搜索,需要查看匹配的单词。例如,如果我正在搜索查询,并且它使该字段与句子匹配,则我需要能够知道匹配是由于单词引起的。 我尝试设置参数,但似乎未包含我需要的信息。有什么想法吗? 问题答案: 好吧,这就是我想要的: 经过一些研究,我发现了elasticsearch的突出功能。 默认情况下,它返回匹配项周围的上下文片段,但是您可以将片段大小设置为查询长度,以仅返回完全匹配项。例

  • 尝试使用通配符进入和弹性搜索精确短语搜索时遇到问题query_string。 希望能够返回结果,这将是所有变体的精确短语。i、 e.“库尔斯酿酒厂”、“库尔斯酿酒厂”、“库尔斯酿酒厂”等。 我不同意这种方法,但想搜索大部分文档以找到匹配的1或2个字段。