我希望在SQL查询中对搜索结果进行排名

时间:2016-07-07 16:44:56

标签: sql-server search ranking

查询:

SELECT TOP 1000 t.columns
FROM dbo.teams as t
RIGHT JOIN fnParseString('Nugget,Tulsa',',') ps ON t.team_name LIKE '%'+ps.string+'%' OR t.nickname LIKE '%'+ps.string+'%'

这确实会返回我想要的结果,但排序并不有用。

我可以在搜索中添加更多列。

如何根据匹配条款的准确性和数量对行进行排名?我知道它只需匹配一个要选择的术语,有没有办法计算与列匹配的术语数。

我看到Need help with SQL for ranking search results但是subselect会为任意数量的搜索令牌工作

2 个答案:

答案 0 :(得分:1)

如果您对某些动态SQL

持开放态度
OD-Nr   OD-Title                    Hits
3       Daily Production Summary    2
6       Default Settings            1

返回

nodetool status

答案 1 :(得分:0)

非动态选项,用于对比。在添加更多要检查的列时,您必须添加订单和加入。

SELECT TOP 1000 t.columns
FROM dbo.teams as t
RIGHT JOIN fnParseString('Nugget,Tulsa',',') ps 
    ON t.team_name LIKE '%'+ps.string+'%' 
       OR t.nickname LIKE '%'+ps.string+'%'
order by 
    case when t.team_name LIKE '%'+ps.string+'%' then 1 else 0 + 
    case when t.nickname LIKE '%'+ps.string+'%' then 1 else 0 
    desc