2013-01-05 10 views
13

Sto cercando di eseguire il debug dei documenti di indicizzazione in Lucene e ho bisogno di vedere il contenuto dell'indice in modo da poter vedere esattamente come i documenti sono stati indicizzati. Presumibilmente Luke lo fa, ma non c'è alcuna documentazione a riguardo, e quando lo indico alla directory dell'indice (in ognuna di esse, anche se non so perché non riesca a capire quale sia quella giusta da sola) , Non ottengo nulla Sicuramente c'è un modo semplice per farlo?Mostra il contenuto dell'indice di Lucene

+1

Ok, dopo alcuni giorni di masticare a questo, per quanto mi riguarda posso dire che questo è in realtà elasticsearch avvolgendo Lucene è per questo che Luca non è in grado di leggere l'indice, ed a quanto pare c'è semplicemente non c'è modo di mostrare il contenuto dell'indice. Bummer. – cbmanica

+0

No, ES usa normali indici Lucene ... devi avere la versione sbagliata. Scarica questi per una versione corrente: https://github.com/DmitryKey/luke/releases –

risposta

11

Luke È il modo semplice per farlo. Lo corri, vai all'indice e vai alle gare. Non potrebbe essere più facile This blog post passi attraverso l'uso di alcune funzionalità di Luke, forse ti aiuterà ad andare avanti con esso.

Ci sono altri strumenti là fuori, come LIMO è anche uno strumento utile per questo, ma è più difficile iniziare rispetto a Luke.

Forse se dai qualche dettaglio sul problema che stai incontrando con Luke, sarai in grado di aiutarti.

+0

In realtà non c'è altro da dire se non 1) So che i dati sono indicizzati, perché i risultati della ricerca tornano; 2) ci sono quattro diverse directory indice (per quale motivo non lo so), e ho provato a puntare su tutte loro; 3) Luca non mostra alcun record in nessuna di quelle directory. Ora, questo è il wrapper Elasticsearch per Lucene, quindi suppongo che potrebbe essere il riempimento di dati in un posto folle che non sto guardando, ma presumo che questo non sia stato scritto da gnomi malvagi ... – cbmanica

+0

Credo che l'indice la directory in ElasticSearch è configurata, in una voce come 'data:/var/data/elasticsearch', per [documenti di configurazione] (http://www.elasticsearch.org/guide/reference/setup/configuration.html). che hai visto? – femtoRgon

+0

Questo è installato su OSX su un account utente, quindi i dati sono in ~/elasticsearch/data, a meno che non sia gravemente ingannato – cbmanica

2

Non so molto di Luke, ma ho lavorato molto con Lucene. Per vedere cosa è indicizzato può essere complicato, anche con Luke, perché puoi vedere solo i dati per i campi memorizzati.

Per l'ultimo progetto Lucene che ho fatto (Solr in realtà), avevo praticamente tutti i campi contrassegnati come indicizzati ma non memorizzati. In questi casi, per verificare se un documento avesse il termine indicizzato corretto, interrogerei l'indice per i documenti con la chiave primaria fornita e il termine previsto. Se corrisponde, allora so che lo indicizza con quel termine.

Per esempio, per vedere se il prodotto 5 è in inglese, direi productId: 5 e LANG: IT

so che questo non risponde direttamente alla tua domanda su come utilizzare Luca, ma questo può essere un'alternativa se Luca non può aiutarti.

+0

Lo terrò a mente in caso sia utile in seguito, anche se in questo caso purtroppo non è stato molto utile. Grazie comunque. – cbmanica

1

Luke tenta di mostrare i valori nei campi che sono indicizzati ma non memorizzati quando si utilizza il pulsante "Ricostruisci & Modifica" dalla scheda "Documenti". Se ricordo bene, le parole di stop non compaiono nel display "Ricostruisci & Modifica" - vedi cose come "null_1", "null_2", ecc.

1

E 'possibile compilare luke dalla sorgente mentre si aggiunge Elastic formato di ricerca in Luke MetaINF/servizi.

basta seguire questo approccio

Using Luke with ElasticSearch

Questo è anche può essere seguito per testare i formati distacco custom/codec con Lucene

elasticsearch utilizza un formato di messaggi personalizzati (il formato di messaggi definisce come l'invertita l'indice è rappresentato in memoria/su disco) e Luke non lo sa. Per dire a Luca del formato dei post ES, aggiungi la classe SPI seguendo i passaggi seguenti.

  1. Clone fonte Luca repositry:

2.Add una dipendenza della versione necessaria di elasticsearch al file di pom del progetto Luca:

<!-- ElasticSearch --> 
<dependency> 
    <groupId>org.elasticsearch</groupId> 
    <artifactId>elasticsearch</artifactId> 
    <version>1.1.1</version> 
</dependency> 
  1. Compila il file jar Luke (crea target/luke-with-deps.jar):

    pacchetto $ mvn

lista di 4.Unpack Luca di formati affissioni note in un file temporaneo:

$ unzip target/luke-with-deps.jar META-INF/services/org.apache.lucene.codecs.PostingsFormat -d ./tmp/ 
Archive: target/luke-with-deps.jar 
    inflating: ./tmp/META-INF/services/org.apache.lucene.codecs.PostingsFormat 
  1. Aggiungere la Formati di messaggi ElasticSearch nel file temporaneo:

    $ echo "org.elasticsearch.index.codec.postingsformat.BloomFilterPostingsFormat"

    ./tmp/META-INF/services/org.apache.lucene.codecs.PostingsFormat $ echo "org.elasticsearch.index.codec.postingsformat.Elasticsearch090PostingsFormat" ./tmp/META-INF /services/org.apache.lucene.codecs.PostingsFormat $ echo "org.elasticsearch.search.suggest.completion.Completion090PostingsFormat" ./tmp/META-INF/services/org.apache.lucene.codecs.PostingsFormat

  2. Reimballare il file modificato nel barattolo :

    $ vaso -uf target/luke-con-deps.jar -C tmp/META-INF/services/org.apache.lucene.codecs.PostingsFormat

  3. Run Luca

    $. /luke.sh

Problemi correlati