Как выполнить частичный поиск по индексу люцена? (поиск по некоторым документам, а не по всем)

Не уверен, что заголовок подходит для этой цели, но я хочу иметь возможность искать только несколько документов (а не все) из индекса Lucene.

Подумайте об этом как о следующем контексте:

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

Можно ли ограничить поиск только некоторыми документами? или мне нужно искать по ВСЕМ индексам, а затем фильтровать результаты?

Спасибо!


person Fabio    schedule 24.10.2011    source источник


Ответы (2)


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

person Jayendra    schedule 24.10.2011
comment
Спасибо за марку! Это имеет смысл, и я не думал об этом, документы без обязательного поля / полей просто игнорируются (не просматриваются, нет снижения производительности). - person Fabio; 24.10.2011

Посмотрите на QueryWrapperFilter. Это позволит вам легко делать такие вещи.

Обратите внимание, однако, что это больше для простоты кодирования. Это не сильно повлияет на производительность, потому что в фоновом режиме выполняется эффективный поиск по всему индексу, но упрощает кодирование «поиска в рамках поиска». Поиск по всему индексу - не проблема, потому что вся цель индекса - сделать индексированный поиск чрезвычайно быстрым. Это предполагает, что у вас есть идентификатор книги, который, кстати, проиндексирован. Если это так, то включение идентификатора книги в ваш поиск позволяет очень быстро выполнять поиск по всему указателю для этой конкретной книги.

person dnuttle    schedule 24.10.2011
comment
Спасибо за ваш ответ! На самом деле я беспокоился о производительности, я думал, что поиск по всему индексу может значительно ухудшить производительность, но, возможно, у меня не будет таких проблем (в индексе не более 1000 документов). - person Fabio; 24.10.2011
comment
Если у вас меньше 1000 документов, время поиска должно составлять, скажем, 1 миллисекунду - производительность не будет проблемой! - person dnuttle; 24.10.2011