【发布时间】:2012-09-07 19:34:44
【问题描述】:
我正在创建一个“智能”搜索引擎,它将通过相关性查看数据库。我的系统会计算你的句子中有多少单词对应于包含文本的数据库字段“tag_clean”,并尝试得到正确的结果(每个研究一个)。
例如,您在 tag_clean 字段中获得“search youpla boom”,如果您录制“search bim”,则另一个条目(如“search youpla bim”)将显示第二个条目。
我的系统为每个单词设置一个点,并获得最相关的结果。一切正常,但我最大的问题是,它完全忽略了单词 order!
如果你有 'google image test' 和 'google test' 并且你用我的系统搜索 'google test image',最相关的将是第一个,但它是第二个是正确的。
我想要一个理解词序重要性的系统,但我不知道如何在 SQL 中做到这一点。
我的 SQL 请求示例(重要部分是最后的 CASE WHEN):
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;
谢谢大家:)
【问题讨论】:
标签: sql words relevance sql-order-by