2017-06-13 4 views
0

I folgende Zuordnung verwendet: Ich habe Englisch Analysator modifizierte Ngram Analysator wie folgt zu verwenden, so daß ich in der Lage sein sollte, unter folgenden Szenarien suchen: 1] Teilsuche und Sonderzeichen suchen 2] erhalten Vorteil von SprachanalyseElasticsearch Rückkehr unerwartete Ergebnisse

{ 
    "settings": { 
     "analysis": { 
      "analyzer": { 
       "english_ngram": { 
        "type": "custom", 
        "filter": [ 
         "english_possessive_stemmer", 
         "lowercase", 
         "english_stop", 
         "english_stemmer", 
         "ngram_filter" 
        ], 
        "tokenizer": "whitespace" 
       } 
      }, 
      "filter": { 
       "english_stop": { 
        "type": "stop" 
       }, 
       "english_stemmer": { 
        "type": "stemmer", 
        "language": "english" 
       }, 
       "english_possessive_stemmer": { 
        "type": "stemmer", 
        "language": "possessive_english" 
       }, 
       "ngram_filter": { 
        "type": "edge_ngram", 
        "min_gram": 1, 
        "max_gram": 25 
       } 
      } 
     } 
    }, 
    "mappings": { 
    "movie": { 
     "properties": { 
     "title": { 
      "type": "string", 
      "fields": { 
      "en": { 
       "type":  "string", 
       "analyzer": "english_ngram" 
      } 
      } 
     } 
     } 
    } 
    } 
} 

meine Daten indexiert wie folgt:

PUT http://localhost:9200/movies/movie/1 
    { 
     "title" : "[email protected] movie" 
    } 

Abfrage wie folgt:

{ 
    "query": { 
     "multi_match": { 
      "query": "$peci#44 m11ov", 
      "fields": ["title.en"], 
      "operator":"and", 
      "type":  "most_fields", 
      "minimum_should_match": "75%" 
     } 
    } 
} 

In Abfrage suche ich nach "$ peci # 44 m11ov" Zeichenfolge, idealerweise sollte ich keine Ergebnisse dafür erhalten. Irgendwas falsch hier?

Antwort

0

Dies ist ein Ergebnis der Tokenisierung ngram. Wenn Sie eine Zeichenfolge [email protected] movie in den Token geben, erzeugt Ihr Analysator Tokens wie $, $p, $pe usw. Ihre Abfrage erzeugt auch die meisten dieser Token. Diese Matches haben zwar eine niedrigere Punktzahl als ein komplettes Match. Wenn es entscheidend ist, dass Sie diese falsch positiven Übereinstimmungen ausschließen, können Sie versuchen, einen Schwellenwert unter Verwendung min_score Option https://www.elastic.co/guide/en/elasticsearch/reference/current/search-request-min-score.html

+0

Danke Random! – SSG