Производительность полезной нагрузки в Lucene - PullRequest
1 голос
/ 16 сентября 2009

Я знаю, что в Интернете, как и в SO, есть несколько тем, касающихся индексации и производительности запросов в Lucene, но мне еще предстоит найти тему, в которой обсуждается, стоит ли (и если да, то сколько) создание полезных нагрузок. повлияет на производительность запроса ...

Вот сценарий ...

Допустим, я хочу проиндексировать коллекцию документов (где-то от 100K до 10M), и у каждого документа есть подраздел, который я хочу иметь возможность искать отдельно (или, возможно, ранжировать выше, в зависимости от того, было ли найдено соответствие этот раздел).

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

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

Спасибо!

РЕДАКТИРОВАТЬ: Я ценю альтернативные решения для моего сценария, но в случае, если мне нужно будет использовать полезные нагрузки в будущем, есть ли у кого-нибудь какие-либо комментарии относительно первоначального вопроса о производительности запроса?

Ответы [ 2 ]

1 голос
/ 16 сентября 2009

Решение учебника для того, что вы хотите сделать, - индексировать каждый исходный документ как два поля: одно для полного документа, а другое для подраздела. Вы можете увеличить поле подраздела отдельно либо во время индексации, либо во время поиска. Сказав это, вы можете прочитать о полезных нагрузках Lucene здесь: Начало работы с полезными нагрузками .

0 голосов
/ 17 декабря 2010

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

Полезные данные прикрепляются к отдельным вхождениям терминов в документе, а не к парам документ / термин. Для хранения полезных нагрузок и доступа к ним необходимо использовать смещение термина вхождение в документе. В вашем случае, если вы знаете смещение, вы сможете рассчитать, в каком разделе находится термин вхождение, без использования данных полезной нагрузки.

Более широкий вопрос - влияние полезных нагрузок на производительность. Мой опыт показывает, что при правильном использовании реализация полезной нагрузки занимает меньше места и работает быстрее, чем любой обходной путь, который я ранее использовал. Наибольшее влияние на дисковое пространство будет иметь то место, где вы в настоящее время используете Field.setOmitTermFreqAndPositions (true) для уменьшения размера индекса. Вам нужно будет включить позиции для использования полезных нагрузок, что потенциально может значительно увеличить индекс.

...