簡體   English   中英

MySQL-搜索/選擇按相關性排序?

[英]MySQL - Search/SELECT which is ordered by relevance?

我的表設置如下:

userid year  model  color  transmission  interiorcolor wheels
-------------------------------------------------------------------
   1   2005  Fiesta   Red   MT             Black        Stock
   2   2008  Monaro   Red   AT             Black        Stock
   3   2005  F-150S   Blue   AT            Black + Red  Stock
   4   2008  Fiesta   Green   MT           Black        Stock

現在,我正在構建一個SQL搜索(全文搜索中沒有標准構建),並且我希望結果具有一定的相關性。

我的意思是,例如,如果有人鍵入“ 2008 Fiesta”,則現在使用基本查詢按此順序顯示結果

ID#1,ID#2,ID#4

但是,在這種情況下,我真的希望#4處於搜索的頂部,因為它與我在兩個字段而不是一個字段上的搜索匹配。

謝謝!

您可能想看看使用Lucene(或在Lucene之上的SOLR),而不是依靠MySQL這樣的東西。 您仍然可以將實際數據存儲在MySQL中。 我使用的常規設置是SOLR / Lucene進行全文搜索/相關性搜索,以獲得我感興趣的實體的ID,然后點擊MySQL來獲取這些實體的實際數據。 使用SOLR / Lucene可以為您提供全文搜索,並以搜索/排序數據的方式增加了很多功能,此外還提供了詞干等功能。

我認為您的select語句如下:

LIKE %2008 Fiesta%

嘗試服用最后的% ,它將起作用

這很粗糙,但它應該為您工作:

SELECT id, SUM(Relevance) as SearchRelevance
FROM(
SELECT id, 1 as Relevance
FROM cars
WHERE year = 2008
UNION ALL
SELECT id, 1 as Relevance
FROM cars
WHERE model='Fiesta') AS t
GROUP BY id
ORDER BY SUM(Relevance) DESC

基本上,它會搜索每個條件,將它們全部合並在一起,然后按相關性總和對它們進行分組和排序(每個匹配項可得1分)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM