【发布时间】:2013-09-22 21:17:45
【问题描述】:
我想在自然语言模式下搜索以按相关性对结果进行排序,但我的查询仅适用于 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`)
【问题讨论】:
-
afaik 你无法在布尔模式下获得相关性,即使名称暗示它会返回 true 或 false
-
我试过 WITH QUERY EXPANSION 但这也没有显示任何结果。仍然不知道为什么在自然语言模式下搜索不起作用。
-
我发现我正在使用的脚本通过 PDO 获取数据: $conn->setAttribute(PDO::ATTR_DEFAULT_FETCH_MODE, PDO::FETCH_ASSOC);这可能是自然语言模式下全文搜索不起作用的原因吗?
-
它可以是......只是尝试不使用 PDO 并查看
标签: php mysql boolean full-text-search