2015-05-04 14 views
11

Zastanawiam się, czy w ogóle możliwe jest uzyskanie pierwszych dziesięciu najczęstszych słów w polu Elasticsearch w całym indeksie lub aliasie.Elastyczna częstotliwość wyrazów i relacje między nimi

Oto, co usiłuję zrobić:

ja indeksowanie dokumentów tekstowych wydobyte z różnych typów dokumentów (Word, PowerPoint, PDF, itd) te są analizowane i przechowywane w polu o nazwie doc_content. Chciałbym wiedzieć, czy istnieje sposób na znalezienie najczęstszych słów w danym indeksie, które są przechowywane w polu doc_content.

Aby było bardziej zrozumiałe, załóżmy, że indeksuję faktury na przykład z Amazon i eBay. Teraz załóżmy, że mam 100 faktur z Amazon i 20 faktur z serwisu eBay. Przyjmijmy również, że słowo "amazon" występuje dwukrotnie w każdej fakturze amazon i słowo "eBay" występuje 3 razy w każdej fakturze eBay.

Czy istnieje sposób, aby uzyskać agregat sortowania, który mówi mi, że słowo "amazon" pojawia się w moim indeksie 200 razy (100 faktur x 2 wystąpień/faktury), a słowo "eBay" pojawia się 60 razy (20 faktur x 3 wystąpień/faktura).

Moje drugie pytanie brzmi, czy to pierwsze możliwe, to czy istnieje sposób na określenie, co jest najczęstszym słowem, które pojawia się po danym słowie?

Na przykład: pozwala założyć, że mam 100 dokumentów. 60 z tych dokumentów zawiera określenie "Stary kot", a 40 zawiera termin "Stary pies" i dla celów argumentu przyjmijmy, że słowa te pojawiają się tylko raz w każdym dokumencie.

Teraz, jeśli możemy uzyskać częstotliwość słowa „stary”, który w naszym przypadku powinno być 100. Czy możemy następnie określić stosunek do słowa, które przychodzi po to, aby mieć coś takiego:

   __________ Cat (60) 
       | 
Old (100)-----| 
       |__________ Dog (40) 

Odpowiedz

3

Aby uzyskać częstotliwości terminów, można użyć term vectors. Jednak najpierw trzeba je przechowywać, a po drugie, można je odzyskać tylko dla danego dokumentu.

O ile mi wiadomo, nie jest możliwe łączenie wektory terminowe.

Może uda ci się osiągnąć część tego, co chcesz, używając skryptowych pól. Ale znowu Groovy jest obecnie zniechęcony z powodu problemów związanych z bezpieczeństwem, a agregacja na polach ze skryptami jest potencjalnie powolna.

Nawiasem mówiąc, podobne pytania zostały poproszone przed:

+0

Cóż można opracować bardziej na użyciu skryptów pól do kruszywa częstotliwości słownych. Bezpieczeństwo nie stanowi problemu, ponieważ mój klaster ES nie jest publiczny. –

+0

Możesz użyć pól z indeksowanym czasem do samodzielnego obliczenia częstotliwości słów. Nie sądzę, żeby to była dobra opcja, ale mogłaby działać, gdybyś był zainteresowany tylko niewielkim zestawem predefiniowanych słów kluczowych. –

Powiązane problemy