搜索

首页  >  问答  >  正文

排序MYSQL全文搜索结果的相关性方法

<p>我对MYSQL相对较新,有一个问题困扰了我一段时间。我尝试在各个地方搜索答案,但是还没有找到可接受的解决方案。</p> <p>这是我目前运行的查询,用于找到给定搜索词的最佳匹配:</p> <pre class="brush:php;toolbar:false;">$query="SELECT * from `vocabulary` WHERE translation = 'word' OR translation LIKE '%word%'";</pre> <p>它返回的结果是全面的,包括所有相关的行。然而,它们没有按照任何特定的顺序排序,我希望在PHP中打印结果时,首先显示完全匹配的结果。像这样:</p> <hr /> <p>1 | word <-完全匹配</p><p> 2 | crossword <-按字母顺序排序的部分匹配 /</p><p> 3 | words</p><p> 4 | wordsmith</p> <hr /> <p>非常感谢您提前的帮助。</p> <p>-macspacejunkie</p>
P粉938936304P粉938936304465 天前553

全部回复(2)我来回复

  • P粉090087228

    P粉0900872282023-08-25 09:40:13

    LIKE不是全文搜索。在全文搜索中,MATCH(...) AGAINST(...)返回一个可以近似表示相关性的匹配分数。

    回复
    0
  • P粉039633152

    P粉0396331522023-08-25 00:44:30

    SELECT * from vocabulary 
    WHERE translation like 'word'  
    union all
    SELECT * from vocabulary 
    WHERE translation LIKE '%word%' and translation not like 'word'

    将首先列出精确匹配

    回复
    0
  • 取消回复