1

我正在 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解决此问题时将其保留为常数。目前它被设置为只搜索“有毒的瓷器”。因此,出乎意料的是,一些不包含中国的结果排名高于包含该特定搜索关键字的结果。

搜索结果

4

1 回答 1

1

您可能想像这样尝试 IN BOOLEAN MODE:

AGAINST (
        'toxic china' IN BOOLEAN MODE
)

因为这应该只是术语上的真/假匹配

于 2011-12-07T22:30:00.550 回答