我正在尝试在标题、作者和文本三个字段上创建关键字搜索。我希望它们按相关性排序,所以我给任何领域的匹配一分。我还有一个名为标签的表,它在每一行中存储一个故事的特定标签。如果标签匹配,我会添加标签使用次数的相关性。当用户输入搜索时,他可以输入一系列关键字。我正在考虑分解字符串并使用 for 循环为每个关键字添加下面 select 语句中的代码。这似乎相当复杂,所以我想知道是否有更好的方法来做到这一点?
select text, ((case when S.sid in (select sid from tags where tahname like 'db')
then (select uses from tags T where S.sid = T.sid and tagname like 'db') +
(case when title like '%db%' then 1 else 0 end) +
(case when author like '%db%' then 1 else 0 end) +
(case when text like '%db%' then 1 else 0 end)) as relevance
from stories S
order by relevance desc
谢谢你。