我希望有人帮我解决这个问题: 我有一个包含条目的表。我想执行查询并根据模式获得分数最高的记录。 模式将是:如果我的单词显示为,那么该条目的分数将是最高的。如果该单词出现在句子中,那么该条目的分数将低于前一个案例。
e.g: 项 entry1:apple entry2:每天一个苹果
如果我搜索“apple”,我希望entry1的得分高于entry2。
所以我提出了这个问题:
SELECT
entry,
MATCH
(entry)
AGAINST
('>("apple") <(apple*)' IN BOOLEAN MODE)
AS
Score
FROM
entries
WHERE
MATCH
(entry)
AGAINST
('>("apple") <(apple*)' IN BOOLEAN MODE)
LIMIT 1
但这是错误的。此查询返回两个句子(“apple”和“每天一个苹果”)的相同分数,因为单词“apple”在两个句子中都显示为原样。 关于什么是AGAINST()的模式的任何建议?
答案 0 :(得分:0)
SELECT
entry,
MATCH (entry) AGAINST ('>("apple") <(apple*)' IN BOOLEAN MODE) AS Score
FROM entries
WHERE MATCH (entry) AGAINST ('>("apple") <(apple*)' IN BOOLEAN MODE)
ORDER BY LENGTH(entry)
LIMIT 1;