Lucene: сравнить результаты по запросам - PullRequest
6 голосов
/ 24 июля 2011

Мне нужно сравнить релевантность результатов поиска по различным запросам Lucene.

На самом деле у меня есть индексированный набор текстовых документов, и когда поиск выполняется по этому набору, я хочу вернуть не лучшее Nрезультаты из этого набора, но все результаты, которые соответствуют запросу "достаточно хорошо".

Этот «достаточно хороший» параметр будет настраиваемым (скажем, между 0 (документ абсолютно не имеет значения) и 1 (документ является наилучшим возможным соответствием)), но я хочу, чтобы он влиял на все запросы одинаково.

Из того, что я нашел в интернете, это не простая задача.Кто-нибудь может дать мне подсказку о том, как подойти к этой проблеме?

Большое спасибо!

Ответы [ 3 ]

1 голос
/ 31 июля 2011

Даже если вы нормализуете оценки с интервалом [0,1], очевидно, неправильно сравнивать оценки по различным запросам, см. Как нормализовать оценки Lucene?

0 голосов
/ 11 августа 2016

Если вы хотите сравнить два или более запросов, я нашел обходной путь. Вы можете сравнить ваш документ с наибольшим количеством баллов с вашим запросом, используя класс LevenstheinDistance или LuceneLevenstheinDistance (Damerau) , чтобы получить расстояние между вашим запросом и вашим результатом.

Результатом является сходство между ними. Делайте это для каждого запроса, с которым вы хотите сравнить. Теперь у вас есть инструмент для сравнения ваших запросов, используя сходство вашего запроса и ваш самый высокий результат. Теперь вы можете выбрать запрос с наибольшей оценкой сходства и использовать его для следующих правильных действий.

//Damerau LevenstheinDistance
LuceneLevenshteinDistance d = new LuceneLevenshteinDistance();

similiarity = d.getDistance(queryterm, yourResult );
0 голосов
/ 04 февраля 2012

Я просто искал ответ на этот же вопрос. Вот что я нашел, оглядываясь по сторонам:

Хотя в целом невозможно сравнивать по запросам , если у вас есть определенные ограниченные типы запросов, например BooleanQuery, состоящий только из TermQuery с, тогда может можно сравнивать результаты по запросам, если отключить повышение координат в конструкторе BooleanQuery .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...