2017-01-14 2 views
0

Ich folgte die Dokumentation wie folgt:Elasticsearch wie Synonyme erstellen

# create the index: 
curl -X PUT "http://localhost:9200/test" -d ' 
{ 
    "settings": { 
    "analysis": { 
     "filter": { 
     "my_synonym_filter": { 
      "type": "synonym", 
      "synonyms": [ 
      "british,english", 
      "queen,monarch" 
      ] 
     } 
     }, 
     "analyzer": { 
     "my_synonyms": { 
      "tokenizer": "standard", 
      "filter": [ 
      "lowercase", 
      "my_synonym_filter" 
      ] 
     } 
     } 
    } 
    } 
}' 

# testing the analyzer: 
curl -X GET "http://localhost:9200/test/_analyze" -d '{"analyzer" : "my_synonyms", "text" : "Elizabeth is the English queen"}' 

# create 2 records: 
curl -X POST "http://localhost:9200/test/1" -d '{"ethnicity": "british"}' 
curl -X POST "http://localhost:9200/test/2" -d '{"ethnicity": "english"}' 

# check that you have 2: 
curl -X POST "http://localhost:9200/test/_search" -d '{"query":{"match_all":{}}}' 

# search: 
curl -X POST "http://localhost:9200/test/_search" -d '{"query":{"query_string":{"query": "english"}}}' 

und als zeigen in den letzten curl Befehl für Englisch gesucht, aber es gibt nur ein Ergebnis statt 2. Irgendwelche Ideen, wie man Synonyme funktionieren lassen?

+1

Warum bist du "query_string" verwenden? Verwenden Sie stattdessen "match", ich wette, es wird funktionieren – bluesummers

Antwort

0

Ich habe den Analysator zu spezifizieren:

curl -X POST http://localhost:9200/test/_search?pretty=true -d '{ 
    "query": { 
    "simple_query_string" : { 
     "query": "english", 
     "analyzer": "my_synonyms" 
    } 
    } 
}' 
Verwandte Themen