代码之家  ›  专栏  ›  技术社区  ›  Elamurugan

MySQL搜索的最匹配项应该排在第一位

  •  0
  • Elamurugan  · 技术社区  · 14 年前

    在对战中我得到了正确的结果,没有问题,但我想要的是结果组合。

    像“计算机图形”一样,我得到的结果是“+计算机+图形”作为“计算机”单独的结果和“计算机图形”的结果和“图形”的结果等。

    在这里,我先要“计算机图形”的结果,然后是另一个单字匹配的结果。我怎么能先拿这些呢?请帮我拿一个

    4 回复  |  直到 14 年前
        1
  •  1
  •   Dario    14 年前

    您应该按相关性排序:搜索您在where中使用的相同查询,call是相关性,然后按该字段排序。

    针对(“…”)选择匹配(“…”)作为相关性 从与中的(“…”匹配的表(“…”)到(“…” 布尔模式 按相关性排序描述

        2
  •  1
  •   Charles    14 年前

    在MySQLfulltext搜索中,如果不进行一点跳跃,就无法做到这一点。

    你基本上需要运行两次搜索来获得你想要的结果。首先,运行一个 boolean fulltext search 使用双引号将要搜索的确切短语括起来。布尔模式下的双引号将返回 仅完全匹配 . 一旦你有了这些结果,那么 your normal natural-language search . 这是正常的,自然的语言搜索,给你带来了部分匹配的麻烦。您需要手动组合这两个搜索结果。

    虽然mysql fulltext可以满足简单的搜索需求,但它不是一个很好的搜索解决方案。考虑一些更有力量的事情,比如 Sphinx , Solr / Lucene 或者类似的东西 ElasticSearch .

        3
  •  1
  •   Wrikken    14 年前

    假设我们谈论的是全文索引:

    ... ORDER BY MATCH('computer graphics') AGAINST (some,columns) DESC;
    
        4
  •  0
  •   Elamurugan    14 年前

    表中的条目

    什么是计算机? 计算机上的图形是什么? 什么是计算机图形? 什么是图形?

    查询:选择*,match(field1,field2)对(“+computer+graphics”在布尔模式下)作为$table的结果,其中match(field1,field2)对(“+computer+graphics”在布尔模式下)按结果asc排序。

    它返回精确的结果,有些结果在中间,有些结果在前面。

    喜欢 什么是计算机图形? 计算机上的图形是什么? 什么是计算机? 什么是图形?

    如何纠正……