我正在创建一个'智能'搜索引擎,它将通过相关性来查看数据库。我的系统计算句子中有多少单词对应于包含文本的数据库字段'tag_clean',并尝试获得正确的结果(每个研究一个)。如何通过相关性排序(包括SQL中的词序)
例如,您在tag_clean字段中搜索“youpla boom”,如果您搜索“搜索bim”,则会显示第二个条目,如“搜索youpla bim”。
我的系统为每个单词设置一个点并得到最相关的结果。一切正常,但我的大问题是,它完全忽略了单词顺序!
如果您有'谷歌图片测试'和'谷歌测试',并且您使用我的系统搜索'谷歌测试图片',最相关的将是第一个,但是它是第二个正确的。
我想要一个理解单词顺序重要性的系统,但我不知道如何在SQL中完成它。
我的SQL请求的样品(重要的部分是当在端部盒):
SELECT *
FROM keywords
WHERE tag_clean LIKE 'google%'
AND (static = 0)
AND
(
tag_clean LIKE '%google%'
OR tag_clean LIKE '%test%'
OR tag_clean LIKE '%image%'
)
OR
(
tag_clean = 'google test image'
AND static = 1
)
ORDER BY
((CASE WHEN tag_clean LIKE '%google%' THEN 1 ELSE 0 END)
+ (CASE WHEN tag_clean LIKE '%test%' THEN 1 ELSE 0 END)
+ (CASE WHEN tag_clean LIKE '%image%' THEN 1 ELSE 0 END))
DESC LIMIT 0, 1;
谢谢大家:)
你是对的,我已经想过这个'肮脏'的解决方案,但我想干净的东西:) 你的系统可以很好,我会考虑一下,谢谢你:) –