2014-07-15 2 views
10

Powiedzmy mam następujące ciągi indeksowane:Jak zasugerować (autouzupełnianie) kolejne słowo w wyszukiwaniu elastycznym?

"My awesome pizza" 
"My awesome beer" 
"Heineken is awesome beer" 
"I love pizza pepperoni" 
"Where is my beer" 

Dla wejścia "My" chcę sugerować:

  1. My niesamowite
  2. Moja piwo

Dla wejścia "awesome" Chcę zasugerować :

  1. niesamowite pizzy
  2. niesamowite piwo

itp

Więc chcę zapewnić kolejne słowa po wejściu użytkownika ... Również z niektórymi rozmycie (aEwsome) również powinny być obsługiwane.

Które sugestie/analizatory powinienem użyć? Próbowałem Term i zakończenia, ale nie jest to, co chcę (ukończenie na przykład działa tylko przy wyszukiwaniu początku frazy - jeśli przekazać słowo, które jest w środku indeksowanego ciąg, to nie sugeruje go,)

Odpowiedz

4

Tylko w przypadku gdy ktoś wpada tutaj podejście krawędź n-g (jak wskazano przez @Siddardha Budige) zostało zastąpione ukończenia suggesters.

Są celowo budowane z myślą o automatycznej sugestii, dzięki czemu są bardzo wydajne. Bardzo pouczający post Przez zespół ES można znaleźć here.

dwa zastrzeżenia:

  1. Są one realizowane przez w pamięci danych struktura i dlatego nie nadają się do dużych zbiorów danych, które nie mieszczą się w pamięci.

  2. Ranking wyników nie opiera się na podobieństwie (wynik jest dopasowany lub nie), więc należy zachować ostrożność podczas mieszania dopasowań rozmytych i nierozmytych.

EDIT: Podzieliliśmy nasze własne doświadczenia z użyciem Zakończenie Suggesters here.

Zawiera kilka praktycznych przykładów na temat rozmytości i informacji na temat nieanglojęzycznych danych wejściowych.