Я работаю над проектом, который использует API текстового поиска Google App Engine, чтобы пользователи могли искать документы, содержащие поле слов. Я сортирую с помощью MatchScorer, который согласно the documentation «назначает оценку, основанную на частоте периода в документе».Как я могу сортировать результаты индекса поиска appengine по релевантности?
Когда пользователь вводит запрос типа «бизнес-промо», я конвертирую его в строку запроса, которая выглядит как words:business OR words:promo
. Я ожидал, что это вернет документы, содержащие как слова «бизнес», так и «промо» перед документами, в которых содержится только одно из слов (так как в документации говорится, что он присваивает оценку, основанную на частоте термина в документе). Тем не менее, я часто вижу результаты, которые содержат только одно из слов перед документами, которые содержат оба.
Я также пробовал запросить с помощью RescoringMatchScorer, но с той же проблемой можно использовать этот бомбардир.
Я подумал о том, чтобы делать отдельные запросы - те, которые И условия поиска и те, что или поисковые термины, - но для этого потребуется много запросов, если пользователь вводит более двух поисковых терминов. Например, если я искал «продвинутых бизнес-решений», я должен был бы запросы, как это, чтобы покрыть все основания:
words:advanced AND words:business AND words:solutions
words:advanced AND words:business
words:advanced AND words:solutions
words:business AND words:solutions
words:advanced OR words:business OR words:solutions
Кто-нибудь есть какие-либо намеки на то, как выполнить поиск, которые возвращают более релевантные результаты (т.е. больше поисковых матчей) до менее значимых результатов?
Да, это связано с поведением, которое я вижу. Однако, должен ли документ, который соответствует как «промо», так и «бизнес» один раз, имеет более высокий балл, чем документ, который только соответствует «бизнесу» один раз? Я вижу точно тот же sort_score, возвращенный для обоих этих случаев, который кажется wwrong. – Greg