我想在自然语言模式下搜索以按相关性对结果进行排序,但我的查询仅适用于布尔模式选择器。如果我使用没有布尔值的查询,则不会得到任何结果。知道为什么这不起作用吗?或者知道如何通过相关性(最匹配的关键字优先)与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`)
将查询更改为
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
将按降序显示您的结果(即最高分在前)