我有一个类似于以下内容的MySQL查询:
SELECT *, MATCH (`Description`) AGAINST ('+ipod +touch ' IN BOOLEAN MODE) * 8 + MATCH(`Description`) AGAINST ('ipod touch' IN BOOLEAN MODE) AS Relevance
FROM products WHERE ( MATCH (`Description`) AGAINST ('+ipod +touch' IN BOOLEAN MODE) OR MATCH(`LongDescription`) AGAINST ('+ipod +touch' IN BOOLEAN MODE) )
HAVING Relevance > 1
ORDER BY Relevance DESC现在,我还通过搜索UPC使查询更高级:
SELECT *, MATCH (`Description`) AGAINST ('+ipod +touch ' IN BOOLEAN MODE) * 8 + MATCH(`Description`) AGAINST ('ipod touch' IN BOOLEAN MODE) + `UPC` = '123456789012' * 16 AS Relevance
FROM products WHERE ( MATCH (`Description`) AGAINST ('+ipod +touch' IN BOOLEAN MODE) OR MATCH(`LongDescription`) AGAINST ('+ipod +touch' IN BOOLEAN MODE) ) AND `UPC` = '123456789012'
HAVING Relevance > 1
ORDER BY Relevance DESC这将返回结果,但我在UPC上成功匹配的事实并不会增加Relevance的值。我能否只进行类似于MATCH()针对()的计算w/全文搜索?
好的,我真正的问题是,为什么下面的内容没有关联的Clarification: 16呢?
SELECT `UPC`, `UPC` = '123456789012' * 16 AS Relevance FROM products WHERE `UPC` = '123456789012' HAVING Relevance > 1 ORDER BY Relevance DESC发布于 2010-05-08 14:52:42
首先,我认为在SELECT中再次使用UPC = '123455778'是多余的。在不正确的情况下,您不会得到任何行,那么为什么不直接使用"1“呢?
话虽如此,我认为你的问题是行动的顺序。随函附上括号中的比较对我有用:
SELECT
`UPC`,
(`UPC` = '12346790') * 16 AS Relevance
FROM
`products`
WHERE
`UPC` = '12346790'
HAVING
Relevance > 1
ORDER BY
Relevance DESChttps://stackoverflow.com/questions/1793776
复制相似问题