Можно ли игнорировать повышение документа lucene? - PullRequest
0 голосов
/ 23 сентября 2011

Я ищу способ заставить поисковик lucene игнорировать повышение документа по определенным запросам?

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

Теперь я ищу способ предложить функциональность поиска, которая игнорирует возраст, но пока не нашла способа переопределить / игнорировать ускорение документа.

С уважением,

Alex

Ответы [ 3 ]

1 голос
/ 23 сентября 2011

http://lucene.apache.org/java/3_0_0/api/core/org/apache/lucene/search/Similarity.html

С точки зрения 6, я считаю, невозможно игнорировать повышение во время поиска:

норма (t, d) включает в себя несколько коэффициентов увеличения и длины (время индексации):

  • Увеличение документа - устанавливается вызовом doc.setBoost () перед добавлением документ к указателю.
  • Повышение поля - устанавливается вызовом field.setBoost () перед добавлением поле для документа.
  • lengthNorm (поле) - вычисляется при добавлении документа в индекс в соответствии с количеством токенов этого поля в документ, так что более короткие поля вносят больший вклад в счет. LengthNorm вычисляется классом подобия, действующим при индексации.

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

(...)

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

1 голос
/ 23 сентября 2011

Вы ищете что-то, что QueryParser мог бы понять? Потому что это просто невозможно.

Вы добавляете повышение где-то в своем коде, по умолчанию это не делается Lucene. Вам придется удалить этот дополнительный фрагмент кода или сделать его необязательным, чтобы игнорировать повышение.

0 голосов
/ 23 сентября 2011

Вместо того, чтобы сохранять свой расчетный балл как boost , вы можете сохранить его в новом поле, а с помощью CustomScoreQuery + CustomScoreProvider вы можете контролировать, какие значение (оценка по умолчанию или ваша расчетная единица в поле) для возврата

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