2010-06-18 8 views
7

Quel est le meilleur moyen d'atteindre l'indexation en temps réel Lucene?Lucene indexation en temps réel?

+1

Indexation en temps réel de quoi? Pourriez-vous expliquer un peu plus ce que vous cherchez. –

+0

Ayant passé 2 ans à travailler sur ça en solr, je dois dire: solr n'est tout simplement pas la bonne plate-forme en matière d'indexation en temps réel. Les validations sont très lourdes sur les index volumineux - j'ai entendu parler de grandes installations qui peuvent à peine gérer 1 commit par heure. Cela étant dit, un projet récent appelé Lucandra peut s'avérer prometteur - je ne trouve pas de docs maintenant, mais je pensais avoir entendu quelque chose à propos de rien à commettre. http://github.com/tjake/Lucandra#readme –

+1

Vous devez expliquer plus - il n'y a pas de signification spécifique à "temps réel": au minimum, vous devez spécifier ce qui serait un délai acceptable. Le temps réel doux (comme, prend 5 à 10 secondes pour que les mises à jour s'affichent) n'est pas difficile, par exemple pour les index non volumineux. – StaxMan

Répondre

4

Obtenir un lecteur d'index à partir de l'éditeur d'index.

Mise à jour: On dirait que la méthode actuelle est open a directory reader using an index writer objet.

+0

Comment ça va aider avec l'indexation en temps réel? – Mikos

+3

En permettant aux recherches de trouver des documents avant un point de validation. Le lecteur obtenu de l'auteur est continuellement mis à jour au fur et à mesure que des documents sont ajoutés. –

+1

En essayant de faire IndexReader reader = indexWriter.getReader(); La méthode getReader() du type IndexWriter n'est pas visible. http://lucene.apache.org/core/4_7_2/core/org/apache/lucene/index/IndexWriter.html?is-external=true –

2
+0

Zoie est prometteur, mais j'ai trouvé que la documentation et les exemples de code manquaient cruellement. De plus avec Zoie, l'indexation est rapide si les documents à indexer sont groupés, mais l'indexation de quelques documents à la fois est en réalité extrêmement lente. J'ai personnellement trouvé Lucene brut pour être une API plus facile à utiliser. –

1

SolrCloud semble prometteur. Il est encore très récent, mais fournira une indexation Solr distribuée dans l'esprit NoSQL.

8

Lucene dispose d'une fonctionnalité appelée recherche en temps quasi-réel pour répondre exactement à ce besoin.

Il nécessite que votre IndexReader se trouve dans la même JVM que votre IndexWriter.

Vous apportez des modifications à IndexWriter, puis ouvrez un lecteur directement à partir de l'enregistreur à l'aide de IndexReader.open (writer), ou sur les anciennes versions de Lucene writer.getReader(). Cet appel sera normalement très rapide (proportionnellement au nombre de modifications que vous avez effectuées depuis la dernière ouverture d'un lecteur) car il contourne la validation coûteuse normalement requise pour l'ouverture d'un lecteur. Il est capable de rechercher les changements non-engagés dans l'écrivain.

Ce lecteur recherche toujours un instantané instantané de l'enregistreur, c'est-à-dire tous les changements intervenus depuis l'ouverture de l'instantané.