查询:
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会为任意数量的搜索令牌工作
答案 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