Формулировка проблемы: необходима более точная сортировка результатов поиска документов.
Решение: результаты поиска должны сортироваться
по релевантности, высчитываемой поисковым движком
The Apache Lucene
[3].
Примечание: в результате реализации данной задачи постановка на задачу #7852: Сортировка результатов поиска по документам более не является актуальной.
Если вкратце, то результаты поиска сортируются согласно трём критериям релевантности:
полное совпадение слова;
совпадения корня слова;
совпадение части слова.
Кроме того, на сортировку также влияет:
вес параметров, по которым осуществляется поиск:
Параметр | Вес |
---|---|
Номер |
максимальный |
Номер исх. |
максимальный |
Краткое содержание |
средний |
все остальные |
минимальный |
количество вхождений слова (больше - выше);
длина поля (меньше - выше).
Приведем два примера. Допустим, у нас есть набор документов с такими атрибутами:
Номер | Краткое содержание |
---|---|
1134 |
слова слова слова словарный |
1 |
слова |
1 1 1 |
словарный словарный словарный словарный словарный |
11 |
слова поэта |
11 докум |
наши слова - просто слова |
1234 |
словарный слово |
1 док |
словари |
111 документ |
словари словари |
111 |
словарный |
Пусть поисковая строка будет состоять более, чем из 3 символов.
Например,
слова
.
Отсортированные результаты поиска будут таковы:
Номер | Краткое содержание | Значение релевантности |
---|---|---|
1 |
слова |
1.6256008 |
1134 |
слова слова слова словарный |
1.5841607 |
11 докум |
наши слова - просто слова |
1.5012344 |
11 |
слова поэта |
1.4869943 |
1234 |
словарный слово |
1.4799225 |
111 документ |
словари словари |
1.2177606 |
1 док |
словари |
1.217592 |
111 |
словарный |
1.2125727 |
1 1 1 |
словарный словарный словарный словарный словарный |
1.2117814 |
Здесь:
первое значение - полное совпадение с поисковой строкой;
значения с 2 по 4 - совпадение с поисковой строкой (отсортированы по количеству вхождения поискового слова «слово»);
пятое значение - совпадение корня слова;
остальные - совпадение части слова.
Пусть поисковая строка будет состоять менее, чем из 4 символов.
Например, 1
.
Отсортированные результаты поиска будут таковы:
Номер | Краткое содержание | Значение релевантности |
---|---|---|
1 |
слова |
1.6641024 |
1 1 1 |
словарный словарный словарный словарный словарный |
1.6025993 |
1 док |
словари |
1.51289 |
11 |
слова поэта |
1.1845438 |
111 |
словарный |
1.1837962 |
1134 |
слова слова слова словарный |
1.181101 |
1234 |
словарный слово |
1.1794202 |
11 докум |
наши слова - просто слова |
1.1793795 |
111 документ |
словари словари |
1.1788766 |
Здесь:
первое значение - полное совпадение с поисковой строкой;
значения 2 и 3 - совпадение с поисковой строкой (отсортированы по количеству вхождения поискового слова «1»);
значения 4 и 5 - совпадение корня слова (поле состоит только из корней поискового слова «1», отсортированы по длине поля);
остальные - совпадение части слова (отсортированы как по количеству вхождения поискового слова «1», так и по длине поля).