Lucene проблема с И / ИЛИ - PullRequest
2 голосов
/ 22 апреля 2011

Могу ли я в любом случае гарантировать, что каждый документ со всеми условиями запроса всегда будет иметь более высокие оценки, чем документы с меньшими условиями запроса?

Обратите внимание, что я не хочу придерживаться семантики AND. Я все еще хочу показать результаты, если нет документа, соответствующего всем условиям запроса.

1 Ответ

3 голосов
/ 22 апреля 2011

Одна (безопасная, быстрая) вещь, которую вы можете попробовать, - это создать подкласс DefaultS Similarity и откорректировать вычисление коэффициента координации.Расчет по умолчанию - это базовая дробь (например, документ, который соответствует только 2 из 3 терминов, по-прежнему получает 2/3 коэффициента координации как один, который соответствует всем 3).

Если этот коэффициент (соответствует всемусловия запроса) важен для вас, тогда я предлагаю вам явно увеличить документы, которые соответствуют всем условиям запроса, еще ниже, ниже приведен пример, который сокращает счет вдвое для любого документа, который не соответствует всем условиям запроса.

Например:

<code>
@Override
public float coord(int overlap, int maxOverlap) {
  return (overlap == maxOverlap) 
  ? 1f
  : 0.5f * super.coord(overlap, maxOverlap);
}

Этот фактор более подробно описан здесь: Javadocs схожести с Lucene

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