Индексация Lucene в реальном времени?

Каков наилучший способ добиться индексации Lucene в реальном времени?


person Kip    schedule 18.06.2010    source источник
comment
Индексация чего в реальном времени? Не могли бы вы объяснить немного больше, что вы ищете.   -  person Mikael Svenson    schedule 18.06.2010
comment
Потратив 2 года на то, чтобы время от времени работать над этим в solr, я должен сказать: solr — просто неподходящая платформа, когда дело доходит до индексации в реальном времени. Коммиты очень тяжелы для больших индексов — я слышал о больших установках, которые едва ли могут обрабатывать 1 фиксацию в час. При этом недавний проект под названием Lucandra может оказаться многообещающим — сейчас я не могу найти никаких документов, но мне показалось, что я что-то слышал о том, что коммит не нужен. github.com/tjake/Lucandra#readme   -  person Frank Farmer    schedule 18.06.2010
comment
Вы должны объяснить больше - в режиме реального времени нет конкретного значения: как минимум вам нужно указать, какая задержка будет приемлемой. Мягкое реальное время (например, отображение обновлений занимает 5-10 секунд) не сложно, например, для не очень больших индексов.   -  person StaxMan    schedule 24.07.2010
comment
Пожалуйста, не пишите такие запутанные комментарии (о Solr). Вопрос о люцене. Сбой Solr здесь (закрытие индексатора при фиксации, без использования функции Lucene NRT) не по теме.   -  person Robert Muir    schedule 16.11.2011


Ответы (5)


Lucene имеет функцию, называемую поиском почти в реальном времени, чтобы удовлетворить именно эту потребность.

Для этого требуется, чтобы ваш IndexReader находился в той же JVM, что и ваш IndexWriter.

Вы вносите изменения с помощью IndexWriter, а затем открываете средство чтения непосредственно из модуля записи с помощью IndexReader.open(writer) или в более старых версиях Lucene, write.getReader(). Этот вызов обычно будет очень быстрым (пропорционально тому, сколько изменений вы сделали с момента последнего открытия средства чтения), поскольку он обходит дорогостоящую фиксацию, обычно требуемую для открытия средства чтения. Он может искать незафиксированные изменения в модуле записи.

Это средство чтения по-прежнему выполняет поиск моментального снимка из средства записи, т. е. всех изменений на момент его открытия.

person Michael McCandless    schedule 13.05.2011

Получите средство чтения индекса от автора индекса.

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

person Adrian Conlon    schedule 18.06.2010
comment
Как это поможет с индексацией в реальном времени? - person Mikos; 19.06.2010
comment
Разрешив поиск документов до точки фиксации. Читатель, полученный от писателя, постоянно обновляется по мере добавления документов. - person Adrian Conlon; 19.06.2010
comment
При попытке сделать IndexReader reader = indexWriter.getReader(); Метод getReader() из типа IndexWriter невидим. lucene.apache. org/core/4_7_2/core/org/apache/lucene/index/ - person Arun Chandrasekaran; 26.05.2014
comment
Я только что обновил свой ответ для более свежего API Lucene. - person Adrian Conlon; 27.05.2014

Попробуйте Зои

http://sna-projects.com/zoie/

person jmmata    schedule 18.06.2010
comment
У Зои есть обещание, однако я обнаружил, что документации и примеров кода очень не хватает. Кроме того, с Zoie индексирование происходит быстро, если индексируемые документы собраны в пакеты, но индексирование нескольких документов за раз на самом деле происходит очень медленно. Я лично обнаружил, что сырой Lucene является более простым в использовании API. - person Biju Kunjummen; 25.06.2011

В вики Lucene есть некоторая информация: http://wiki.apache.org/lucene-java/NearRealtimeSearch

person Pascal Dimassimo    schedule 18.06.2010

SolrCloud выглядит многообещающе. Он все еще очень новый, но будет обеспечивать распределенное индексирование Solr в духе NoSQL.

person Yuval F    schedule 20.06.2010