2017-01-11 7 views
0

В чем разница между временем индекса полем повышает (field.setBoost(boost)) и время запроса повышает (query.setBoost(boost))Lucene время индекса поле повышает против времени запроса повышает

FAQ Lucene, кажется, конфликтовать с Javadoc. (Lucene 4.9.0)

FAQ:

времени индекса поле форсирует (field.setBoost (форсированный)) это способ выразить такие вещи, как «название этого документа стоит в два раза больше, как название большинство документов ». Увеличивает время запроса (query.setBoost (boost)) - способ выразить «Я забочусь о совпадениях в этом разделе моего запроса в два раза больше, чем о совпадениях по другим предложениям моего запроса».

Индексное увеличение полей времени бесполезно, если вы установите их на каждом документе.

JAVADOC:

Lucene позволяет влиять на результаты поиска по «повышению» в разное время:

Индекса время импульса по телефону Field.setBoost() до того, как документ добавляются в индекс , Увеличение времени запроса путем установки повышения в предложении запроса, вызывающего Query.setBoost(). время индексирования форсирует будут предварительно обработаны для повышения эффективности хранения и записываются в хранилище для поля следующим образом:

От тестирования, FAQ неправильно. Усиление того же самого поля индекса времени во всех документах влияет на оценку.

Javadoc звучит как повышение индекса времени индекса и увеличение времени запроса, оказывают то же самое влияние на подсчет очков. Это правда?

ответ

0

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

field:one^2 field:two^2 field:three^2 

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

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


† Грубо потому, что индекс время форсирует сохраняется с использованием алгоритма сжатия с потерями, что иногда приводит к заметной потере точности.

Смежные вопросы