我正在 MySQL 的 MyISAM 表中开发一个简单的搜索界面,即实现MATCH
/AGAINST
过程。
乍一看它似乎工作正常,但经过进一步检查,它似乎偏向于更短的行长。我只能想象这是因为它给出的分数必须更高,因为匹配的单词百分比更高。
这是对我正在使用的 MySQL 数据库的查询,结果来自下面屏幕截图中的应用程序。
SELECT
report,
status,
GROUP_CONCAT(DISTINCT status) AS statuses,
GROUP_CONCAT(DISTINCT docID) AS docIDs,
GROUP_CONCAT(DISTINCT analyst) AS analysts,
GROUP_CONCAT(DISTINCT region) AS regions,
GROUP_CONCAT(DISTINCT country) AS countries,
GROUP_CONCAT(DISTINCT topic) AS topics,
GROUP_CONCAT(DISTINCT date) AS dates,
MAX(date) AS date,
MIN(date) AS mindate,
MAX(docID) AS docID,
GROUP_CONCAT(DISTINCT event) AS events,
GROUP_CONCAT(DISTINCT rule) AS rules,
GROUP_CONCAT(DISTINCT link SEPARATOR ' ') AS links,
GROUP_CONCAT(DISTINCT province) AS provinces,
MATCH (
region, country, province, topic, event
)
AGAINST (
'toxic china'
) AS score
FROM search_reports
GROUP BY report
ORDER BY score DESC
为简单起见,我在AGAINST
解决此问题时将其保留为常数。目前它被设置为只搜索“有毒的瓷器”。因此,出乎意料的是,一些不包含中国的结果排名高于包含该特定搜索关键字的结果。