0

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

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

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

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

  1. 伦敦和机场作为匹配的结果必须显示在顶部。例如伦敦机场、伦敦主要机场等。
  2. 伦敦的结果必须遵循,因为它与城市字段匹配。
  3. 机场将紧随其后,因为它是类别部分。

要求实际上是首先包括英国的结果,但我已经处理好了。

假设这张桌子是

机场名称 | 国家 | 城市| geo_id 等等。

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

问题甚至是第一个标准,上面的方法是做一个 OR 查询,只显示伦敦和机场的结果......我想在这里做一个 AND 查询,如果我可以使用拆分表函数,我将不胜感激已创建。

我需要一些关于如何设置这些优先级的想法。

我真的需要一些帮助。

4

2 回答 2

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)
于 2013-09-22T10:45:01.540 回答
0

希望这对您使用 sql server 有所帮助

http://technet.microsoft.com/en-us/library/ms142559%28v=sql.105%29.aspx

于 2013-09-22T10:48:56.387 回答