2013-01-05 14 views
13

Próbuję debugowania dokumentów indeksowania w Lucene, i muszę zobaczyć zawartość indeksu, dzięki czemu mogę zobaczyć dokładnie, jak dokumenty zostały zindeksowane. Podobno Luke to robi, ale nie ma na to żadnej dokumentacji, a kiedy wskażę go w katalogu indeksu (w którymkolwiek z nich, chociaż nie wiem, dlaczego nie jest w stanie ustalić, który z nich jest właściwy) Nic nie dostaję. Z pewnością istnieje prosty sposób na zrobienie tego?Pokaż zawartość Lucene indeksu

+1

Ok, po kilku dniach do żucia na to, na ile mogę powiedzieć, że jest to rzeczywiście Elasticsearch owijania Lucene jest dlaczego Luke nie może odczytać indeks, i najwyraźniej nie ma po prostu nie ma mowy o wyświetleniu zawartości indeksu. Bummer. – cbmanica

+0

Nie, ES używa normalnych indeksów Lucene ... musisz mieć złą wersję. Pobierz je dla aktualnej wersji: https://github.com/DmitryKey/luke/releases –

Odpowiedz

11

Luke TO prosty sposób na zrobienie tego. Uruchomisz go, przejdziesz do indeksu i wyruszysz na wyścigi. Nie może być łatwiejsze. This blog post krok po kroku używając niektórych funkcji Luke'a, być może pomoże ci to przejść.

Istnieją inne narzędzia, takie jak LIMO jest również dobrym narzędziem do tego, ale trudniej jest zacząć niż Luke.

Być może, jeśli podasz jakieś szczegóły dotyczące problemu, z którym masz do czynienia z Luke'em, będziesz mógł uzyskać pomoc.

+0

Naprawdę nic więcej do powiedzenia poza 1) Wiem, że są indeksowane dane, ponieważ wyniki wyszukiwania wracają; 2) istnieją cztery różne katalogi indeksu (z jakiego powodu nie wiem) i próbowałem wskazać na wszystkie z nich; 3) Luke nie pokazuje żadnych zapisów w żadnym z tych katalogów. Otóż ​​to jest opakowanie Elasticsearch dla Lucene, więc przypuszczam, że mogłoby to być wypychanie danych w jakimś szalonym miejscu, na które nie patrzę, ale zakładam, że nie zostało to napisane przez złe gnomy ... – cbmanica

+0

Wierzę, że indeks katalog w ElasticSearch jest skonfigurowany w pozycji, takiej jak "data:/var/data/elasticsearch", na [dokumentach konfiguracyjnych] (http://www.elasticsearch.org/guide/reference/setup/configuration.html). Tam, gdzie wyglądasz? – femtoRgon

+0

To jest zainstalowane na OSX na koncie użytkownika, więc dane są w ~/elasticsearch/data, chyba że jestem poważnie oszukany – cbmanica

2

Niewiele wiem o Luke'u, ale dużo pracowałem z Lucene. Aby zobaczyć, co jest indeksowane, może być trudne, nawet z Luke, ponieważ widać tylko dane dla zapisanych pól.

Do ostatniego projektu Lucene, który zrobiłem (w rzeczywistości Solr), miałem praktycznie każde pole oznaczone jako indeksowane, ale nie przechowywane. W takich przypadkach, aby przetestować, czy dokument ma odpowiedni indeksowany termin, zapytałbym indeks o dokumenty z podanym kluczem głównym i oczekiwanym terminem. Jeśli pasuje, to wiem, że indeksował go tym terminem.

Na przykład, aby zobaczyć, czy produkt 5 jest w języku angielskim, powiedziałbym ProductId: 5, a lang:

wiem, że to nie bezpośrednio odpowiedzieć na pytanie dotyczące sposobu korzystania Luke'a, ale to może bądź alternatywą, jeśli Luke nie może ci pomóc.

+0

Będę o tym pamiętał na wypadek, gdyby był pomocny później, choć w tym przypadku niestety nie był zbyt użyteczny. W każdym razie dzięki. – cbmanica

1

Luke próbuje pokazać wartości w polach, które są indeksowane, ale nie są przechowywane, gdy używasz przycisku "Rekonstruuj & Edytuj" z zakładki "Dokumenty". Jeśli dobrze pamiętam, zatrzymanie słów nie pojawia się na ekranie "Odtworzenie & Edycja" - widzisz rzeczy takie jak "null_1", "null_2", itp.

1

Możliwe jest skompilowanie letniego ze źródła przy dodawaniu elastycznego wyszukaj format w Luke MetaINF/services.

Tylko po to podejście

Using Luke with ElasticSearch

to również mogą być stosowane do testowania niestandardowych formatów publikowania/Kodeki z Lucene

ElasticSearch wykorzystuje niestandardowy format Inf (format Inf określa sposób odwrócony indeks jest reprezentowany w pamięci/na dysku), a Luke o tym nie wie. Aby powiedzieć Luke'owi o formacie księgowań ES, dodaj klasę SPI, wykonując poniższe kroki.

  1. Clone źródło Luke repositry:

2.Dodaj zdjęcia zależność na wymaganą wersją ElasticSearch do projektu Łukasza pliku pom:

<!-- ElasticSearch --> 
<dependency> 
    <groupId>org.elasticsearch</groupId> 
    <artifactId>elasticsearch</artifactId> 
    <version>1.1.1</version> 
</dependency> 
  1. Skompiluj plik jar Luke (tworzy cel/luke-with-deps.jar):

    pakiet $ mvn

lista 4.Unpack Luke'a formatów znanych Inf do tymczasowego pliku:

$ 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. Dodać ElasticSearch komentarze formatów do pliku tymczasowego:

    $ 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. Zapakuj zmodyfikowany plik z powrotem do słoika :

    $ słoik -uf target/luke-z-deps.jar -C tmp/META-INF/services/org.apache.lucene.codecs.PostingsFormat

  3. Run Łukasza

    $. /luke.sh