2016-04-29 13 views
0

Angenommen, ich habe eine Zeichenfolge, die aus drei Token besteht: abc def ghi.Elasticsearch: Generische Token-Kombinationen

Ich möchte eine Abfrage auszuführen, um die exakte Anpassung und seine Variationen wie abzurufen:

abc ghi def (Token in jeder Reihenfolge)

abc def (fehlende Token)

abc def JKL ghi (irgendwelche zwischen dem gewünschten Tokens eingefügt Tokens)

AZC DZF gzz (Token mit einem Fehler in einem beliebigen Anzahl der Zeichen)

das heißt, ich möchte Dokumente abrufen, die genau die Token, ihre Variationen und ihre orthographischen Fehler enthalten.

Ich habe versucht, eine Match-Phrasepräfix-Abfrage, aber es führt keine Regexp in den Initialen Tokens, nur in der letzten Token.

Ich habe regexp Abfrage versucht, aber es führt keinen Slop zwischen den Tokens.

Kann mir jemand etwas vorschlagen?

Vielen Dank im Voraus.

Antwort

0

sagen Let ich Index ein Dokument wie das unten ohne besondere Einstellungen, Analysatoren, etc:

PUT my_index 
{ 
    "text": "abc def ghi" 
} 

Dann ein einfaches match würde die Arbeit machen

# exact search 
POST my_index/_search 
{ 
    "query": { 
    "match": { 
     "text": { 
     "query": "abd def ghi" 
     } 
    } 
    } 
} 
=> matches with score 0.26574233 

# tokens in any ordering 
POST my_index/_search 
{ 
    "query": { 
    "match": { 
     "text": { 
     "query": "abd ghi def" 
     } 
    } 
    } 
} 
=> matches with score 0.26574233 

# missing token 
POST my_index/_search 
{ 
    "query": { 
    "match": { 
     "text": { 
     "query": "abd def" 
     } 
    } 
    } 
} 
=> matches with score 0.2169777 

# any tokens inserted between my desired tokens 
POST my_index/_search 
{ 
    "query": { 
    "match": { 
     "text": { 
     "query": "abd ghi jkl def" 
     } 
    } 
    } 
} 
=> matches with score 0.093538016 

# tokens with errors in any number of its chars 
POST my_index/_search 
{ 
    "query": { 
    "match": { 
     "text": { 
     "query": "azc dzf gzz", 
     "fuzziness": 2 
     } 
    } 
    } 
} 
=> matches with score 0.25571066 
+0

Konnten Sie dies versuchen aus? – Val