2013-09-22 34 views
0

我有一個自動完成搜索框,我正在爲客戶端進行工作。數據庫位於SQL Server中,並且有大量數據。根據不同條件搜索結果優先

我已經能夠對數據庫執行標準的LIKE查詢,但這並不是什麼大問題,但客戶端已經提出了一些要求。

假設搜索關鍵詞是「倫敦機場」

,顯示了必須有一定的優先級結果。以下是優先標準:

  1. 與倫敦和機場匹配的結果必須顯示在頂部。例如倫敦機場,倫敦主要機場等。
  2. 倫敦的結果必須遵循,因爲它匹配城市領域。
  3. 機場將隨後,因爲它是類別的一部分。

該要求實際上是首先包括英國的結果,但我已經考慮到了這一點。

比方說,表是

AIRPORT_NAME |國家|城市| geo_id等。

我創建了拆分成關鍵字結果的錶行,然後我做了類似的查詢 LIKE「%split_table.result%」

麻煩的是,即使是第一個標準的表格功能,上面的方法是做一個OR查詢,只顯示倫敦和機場的結果......我想在這裏做一個AND查詢,並希望能夠使用我創建的拆分表函數。

我需要一些關於如何設置這些優先級的想法。

我真的很合適一些幫助。行動

回答

1

一個計劃是要建立單獨的結果集,並聯合在一起

select Id, Name 
from 
    (
     Select Id, Name, 1 as SearchRank from tables where (primary filter) 
     union 
     Select Id, Name, 2 as SearchRank from tables where (secondary filter) 
     union 
     Select Id, Name, 3 as SearchRank from tables where (tertiary filter) 
    ) results 
group by Id, Name 
order by Min(SearchRank)