【问题标题】:Full text search to match multiple words in a string mysql全文搜索以匹配字符串mysql中的多个单词
【发布时间】:2015-07-25 17:36:27
【问题描述】:

我正在使用全文搜索进行搜索查询。当我搜索两个单词时,我想要精确的两个单词匹配结果。这里的问题是我也得到一个单词匹配结果。数据包含波兰语字符。 我的代码是

  $qry="select * from tbl_jobs where MATCH(job_title) AGAINST('+Młodszy +Konsultant' IN BOOLEAN MODE)";

我得到的结果是

  1. [job_title] => młodszy konsultant ds. sprzedaży
  2. [job_title] => Młodszy Konsultant
  3. [job_title] => Konsultant ds. sprzedaży młodszy
  4. [job_title] => Telefoniczny konsultant

我有以下索引

这里前 3 个结果是正确的,但第 4 个结果是错误的。 job_title 只包含一个匹配的单词结果。我想要两个搜索词强制结果集。 查询也是正确的,我使用的是 utf8_general。请问具体问题出在哪里

【问题讨论】:

  • 我正在使用 MyISAM utf8_general_ci
  • 非拉丁字符是否需要用双引号转义? SELECT * FROM tbl_jobs MATCH (job_title) AGAINST ('+"Młodszy" +"Konsultant"' IN BOOLEAN MODE)

标签: php mysql


【解决方案1】:

对于全文搜索,您可以在此处查看完整详细的视频。给你一个小费

不要使用“*”,除非你想在一个 桌子。而是使用列限定名称,例如是否有表 的学生有一个卷没有,

SELECT students.roll_no FROM students

Link for the tutorial btw!

【讨论】:

    【解决方案2】:

    如果你有两个词说abcxyz要匹配,并且你想同时匹配这两个,那么你可以使用通配符%它会像正则表达式匹配一样匹配

    select * from mytable where job_title like '%abc%xyz%' or job_title like '%abc%xyz%'
    

    它将为您提供职位名称同时包含 abcxyz 的唯一记录

    【讨论】:

      猜你喜欢
      • 2010-12-15
      • 2020-01-01
      • 2011-11-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-01-02
      • 2015-04-01
      相关资源
      最近更新 更多