2016-07-26 12 views
1

Ich verwende die Elastic mit den folgenden Einstellungen:Elastic nicht das letzte Wort im Satz findet mit dem Punkt am Ende

ES = { 
"mappings": { 
    ES_DOC_TYPE: { 
     "properties": { 
      "message": { 
       "type": "string", 
       "analyzer": "liza_analyzer", 
       "include_in_all": False 
      } 
     } 
    } 
}, 
"settings": { 
    "number_of_shards": 4, 
    "analysis": { 
     "tokenizer": { 
      "liza_tokenizer": { 
       "type": "pattern", 
       "pattern": r"(\.)|[\s,\[\]\(\)\"\!\'\?\`\*\;\:\/<>«»\#]+", 
       "flags": "UNICODE_CASE" 
      } 
     }, 
     "analyzer": { 
      "liza_analyzer": { 
       "type": "custom", 
       "tokenizer": "liza_tokenizer", 
       "filter": ["lowercase"] 
      } 
     }, 
    } 
} 
} 

Wenn ich versuche, ein Wort zu finden, ‚hallo‘ in einem Satz ' Hallo Welt ', der Elastic findet es.

Wenn ich versuche, ein Wort "Hallo" in einem Satz "Hallo" zu finden. Welt ', findet der Elastic es.

Wenn ich versuche, ein Wort "Hallo" in einem Satz "Hallo" zu finden, findet die Elastic es auch.

Aber wenn ich versuche, das Wort "Hallo" in einem Satz "Hallo" zu finden. (mit dem Punkt am Ende), der Elastic findet es nicht. Zugleich

die Tokens für die beiden letzten Sätze wie

{ 
"tokens": [{ 
    "token": "hello", 
    "start_offset": 0, 
    "end_offset": 5, 
    "type": "<ALPHANUM>", 
    "position": 0 
}] 
} 

sieht (sie sind identisch)

Die Frage ist: Warum geschieht ist das? Wie kann ich es reparieren?

+0

Was ist die genaue Abfrage, die Sie verwenden? –

+0

'curl -XPUT 'localhost: 9200/liza_index/.percolator/UNIQ_ID4' -d '{" Abfrage ": {" match ": {" regexp ": {" message ":" Hallo "}}}}' und 'curl -XGET 'localhost: 9200/liza_index/liza_type/_percolate' -d '{" doc ": {" nachricht ":" hallo. "}}'' – Shelari

Antwort

0

Ihr Muster ist falsch. Es sollte sein:

"pattern": "(\.\s*)|[\s,\[\]\(\)\"\!\'\?\`\*\;\:\/<>«»\#]+" 
+0

Es funktioniert, danke! – Shelari

Verwandte Themen