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