Как устранить смещение по отношению к более коротким строкам в MATCH / AGAINST? - PullRequest
1 голос
/ 08 декабря 2011

Я работаю над простым интерфейсом поиска в таблице MyISAM в MySQL, который реализует процедуры 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 константу, пока я работаю над этой проблемой.В настоящее время он настроен только на поиск «токсичного фарфора».Таким образом, неожиданно, что некоторые результаты, которые не содержат Китай, оцениваются выше, чем те, которые содержат это конкретное ключевое слово для поиска.

Search Results

1 Ответ

1 голос
/ 08 декабря 2011

Вы можете попробовать В БУЛЕВОМ РЕЖИМЕ, например, так:

AGAINST (
        'toxic china' IN BOOLEAN MODE
)

, так как это должно быть просто совпадение истина / ложь для термина

...