根据不同的条件搜索结果优先级

时间:2013-09-22 10:38:06

标签: sql sql-server

我有一个自动完成的搜索框,我正在为客户工作。数据库在SQL Server中,并且有大量数据。

我已经能够对数据库进行标准LIKE查询,这不是一个问题,但客户端已经提出了一些要求。

假设搜索关键字是“伦敦机场”

显示的结果必须具有一定的优先权。以下是优先标准:

  1. 伦敦和机场匹配的结果必须显示在顶部。例如伦敦机场,伦敦主要机场等。
  2. 伦敦的结果必须遵循,因为它与城市场地相匹配。
  3. 然后机场会跟进,因为它是类别的部分。
  4. 该要求实际上是首先包括英国的结果,但我已经处理过了。

    假设表格是

    Airport_name |国家|城市| geo_id等等。

    我创建了一个表函数,将关键字拆分为结果表行,然后我就完成了类似的查询 喜欢'%split_table.result%'

    麻烦就是第一个标准,上面的方法是进行OR查询,只显示伦敦和机场的结果......我想在这里做一个AND查询,如果我可以使用拆分表,我会很感激我创造的功能。

    我需要了解如何设置这些优先级。

    我真的需要一些帮助。

2 个答案:

答案 0 :(得分: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)

答案 1 :(得分:0)