Ray*_*lex 8 php sql sql-server
假设我爆炸了搜索中传递的字符串.例如:"如果有狗" "如果有狗"(傻美国人).
我们根据""结果爆炸......
if
there
were
a
dog
Run Code Online (Sandbox Code Playgroud)
现在我想跑一个 SQL select * from table_name query where column_name like
'%something%' or column_name like '%somethingelse%'...
我正在尝试确定如何搜索表并按包含最多匹配的行进行排序.(即,如果第45行包含上述分割项中的4个而第21行仅包含2,则第45行应显示在结果的顶部).
这将是一种原始的"搜索相关性"逻辑.在SQL中有这种检索的特定术语吗?
建议?
只需将比较放在order by子句中,使用case语句将它们转换为0/1,然后将它们添加起来:
select *
from table_name query
where column_name like '%something%' or column_name like '%somethingelse%'
order by ((case when column_name like '%something%' then 1 else 0 end) +
(case when column_name like '%somethingelse%' then 1 else 0 end)
. . .
) desc
Run Code Online (Sandbox Code Playgroud)
我倾向于将查询写成:
select (Match1+Match2+. . .) as NumMatches, <rest of columns>
from (select t.*,
(case when column_name like '%something%' then 1 else 0 end) as Match1,
. . .
from tablename
) t
order by NumMatches desc
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
985 次 |
| 最近记录: |