2010-06-18 28 views
7

¿Cuál es la mejor manera de lograr la indexación en tiempo real de Lucene?Lucene indexación en tiempo real?

+1

Indización en tiempo real de qué? ¿Podría explicar un poco más lo que está buscando? –

+0

Después de haber pasado dos años trabajando en esto de vez en cuando a solas, tengo que decir: solr no es la plataforma adecuada cuando se trata de la indexación en tiempo real. Los commits son muy pesados ​​en índices grandes. He oído hablar de grandes instalaciones que apenas pueden administrar 1 commit por hora. Una vez dicho esto, un proyecto reciente llamado Lucandra puede ser prometedor: no puedo encontrar ningún documento ahora, pero creí haber escuchado algo sobre la necesidad de comprometerme. http://github.com/tjake/Lucandra#readme –

+1

Tiene que explicar más: no hay un significado específico para "tiempo real": como mínimo debe especificar qué retraso sería aceptable. En tiempo real suave (por ejemplo, tarda de 5 a 10 segundos para que se muestren las actualizaciones) no es difícil, por ejemplo, para los índices no grandes. – StaxMan

Respuesta

4

Obtenga un lector de índice del escritor de índice.

Actualización: Parece que el método actual es el objeto open a directory reader using an index writer.

+0

¿Cómo va a ayudar esto con la indexación en tiempo real? – Mikos

+3

Al permitir búsquedas para encontrar documentos antes de un punto de confirmación. El lector obtenido del escritor se actualiza continuamente a medida que se agregan los documentos. –

+1

Al intentar hacer IndexReader reader = indexWriter.getReader(); El método getReader() del tipo IndexWriter no está visible. http://lucene.apache.org/core/4_7_2/core/org/apache/lucene/index/IndexWriter.html?is-external=true –

2
+0

Zoie tiene una promesa, sin embargo, he encontrado que la documentación y el código de muestras carecen severamente. Además, con Zoie, la indexación es rápida si los documentos a indexar están agrupados, pero la indexación de algunos documentos a la vez es extremadamente lenta. Personalmente, he encontrado que Lucene sin procesar es una API más fácil de usar. –

1

SolrCloud parece prometedor. Todavía es muy nuevo, pero proporcionará una indexación distribuida de Solr en el espíritu NoSQL.

8

Lucene tiene una función llamada búsqueda casi en tiempo real para abordar exactamente esta necesidad.

Requiere que su IndexReader esté en la misma JVM que su IndexWriter.

Realiza cambios con IndexWriter, y luego abre un lector directamente desde el escritor usando IndexReader.open (escritor), o en versiones anteriores de Lucene writer.getReader(). Esta llamada normalmente será muy rápida (en proporción a la cantidad de cambios que haya realizado desde la última apertura de un lector) ya que omite la costosa confirmación normalmente requerida para abrir un lector. Es capaz de buscar los cambios no comprometidos en el escritor.

Este lector sigue buscando una instantánea de punto en el tiempo del autor, es decir, todos los cambios desde el momento de su apertura.

Cuestiones relacionadas