Объяснение оценки полнотекстового поиска MySQL

В последнее время я экспериментировал с полнотекстовым поиском, и мне любопытно, что означает значение Score. Например, у меня есть следующий запрос:

SELECT table. * ,
MATCH (
col1, col2, col3
)
AGAINST (
'+(Term1) +(Term1)'
) AS Score
FROM table
WHERE MATCH (
col1, col2, col3
) 
AGAINST (
'+(Term1) +(Term1)'
)

В результатах Score я видел результаты для одного запроса от 0,4667041301727 до 11,166275978088. Я понимаю, что это идея релевантности MySQL (чем выше, тем больше вес).

Чего я не понимаю, так это того, как MySQL получает этот результат. Почему число не возвращается как десятичное или что-то еще?

Почему, если я запускаю запрос «В БУЛЕВОМ РЕЖИМЕ», оценка всегда возвращает 1 или 0? Разве все результаты не будут 1?

Просто надеюсь на какое-то просветление. Спасибо.


person Eric Lamb    schedule 23.10.2008    source источник


Ответы (2)


Как правило, релевантность основана на количестве совпадений каждой строки со словами, заданными для поиска. Точное значение будет зависеть от многих факторов, но на самом деле оно имеет значение только для сравнения с другими значениями релевантности в том же запросе.

Если вам действительно нужна математика, стоящая за этим, вы можете найти ее по адресу внутреннее руководство.

person Harrison Fisk    schedule 23.10.2008
comment
Могу ли я отобразить клиенту значение 11.166275978088 как релевантность 11%? - person se_pavel; 18.05.2009
comment
это было бы плохой идеей... это не точно... нет - person johnnietheblack; 13.01.2010
comment
@se_pavel Скорее, я думаю, что вместо этого вы могли бы получить сумму баллов, разделить ее на 11,1662xx ... и умножить на 100. Если моя математика не сбивается с толку, вы сможете легко получить процент релевантности. Пример: 11/159,399*100 = 6,90092158671% - person Ihsan; 28.01.2020

Возьмем в качестве примера запрос «слово1 слово2».

Режим BOOLEAN указывает, что весь ваш запрос соответствует документу (например, он содержит как слово1, так и слово2). Логический режим является строгим соответствием.

Обычно используемая формула основана на векторной пространственной модели поиска. Очень упрощенно, он вычисляет две меры, чтобы определить, насколько важно слово для запроса. Частота терминов (термины, которые часто встречаются в документе, более важны, чем другие термины) и обратная частота документов (термин, который встречается во многих документах, имеет более низкий вес, чем термин, который встречается в нескольких документах). Он известен как tf-idf и используется в качестве основы для векторного пространства. модель. Эти оценки составляют основу модели векторного пространства, которую кто-то другой может подробно объяснить. :)

person Vegard Larsen    schedule 24.10.2008