MySQL MATCH-AGAINST场景

时间:2014-04-09 16:24:24

标签: mysql

我希望有人帮我解决这个问题: 我有一个包含条目的表。我想执行查询并根据模式获得分数最高的记录。 模式将是:如果我的单词显示为,那么该条目的分数将是最高的。如果该单词出现在句子中,那么该条目的分数将低于前一个案例。

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()的模式的任何建议?

1 个答案:

答案 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;