0

我想在自然语言模式下搜索以按相关性排序结果,但我的查询仅适用于 BOOLEAN 模式选择器。如果我使用不带 BOOLEAN 的查询,我不会得到任何结果。知道为什么这不起作用吗?或者想知道如何通过 BOOELAN 的相关性(最匹配的关键字优先)获得结果?

我的查询:

SELECT *,
MATCH(md.keywords) AGAINST('$meta[keywords]' IN BOOLEAN MODE) AS score
FROM 
meta_data AS md 
INNER JOIN
sites AS si ON md.domain = si.domain && si.domain != '$data[domain]'
WHERE
MATCH(md.keywords) AGAINST('$meta[keywords]' IN BOOLEAN MODE)
ORDER BY score Desc
LIMIT 25

数据库是MyISAM,我已经更改了 mysql 表以进行全文搜索

FULLTEXT KEY `title` (`title`,`description`,`keywords`)
4

1 回答 1

2

将您的查询更改为

 SELECT *, MATCH(md.keywords) AGAINST('$meta[keywords]') AS score
 FROM 
 meta_data AS md 
 INNER JOIN sites AS si ON md.domain = si.domain && si.domain != '$data[domain]'
 WHERE
 MATCH(md.keywords) AGAINST('$meta[keywords]' IN BOOLEAN MODE)
 ORDER BY score DESC
 LIMIT 25

MATCH(md.keywords) AGAINST('$meta[keywords]') AS score

将返回搜索词的相关性分数和

 ORDER BY score DESC

将按降序显示您的结果(即最高分优先)

于 2013-09-18T10:19:47.020 回答