2016-03-30 9 views
0

ElasticSearchクエリのトラブル

{ "autosuggest_destination": { 
     "aliases": {}, 
     "mappings": { 
     "destination": { 
      "properties": { 
       "city": { 
        "type": "string" 
       }, 
       "country": { 
        "type": "string" 
       }, 
       "id": { 
        "type": "string" 
       }, 
       "state": { 
        "type": "string" 
       } 
      } 
     } 
     }, 
     "settings": { 
     "index": { 
      "creation_date": "1459329252404", 
      "number_of_shards": "1", 
      "number_of_replicas": "0", 
      "version": { 
       "created": "1070299" 
      }, 
      "uuid": "_1D7ZW0dQwy9kiKn0kKrLw" 
     } 
     }, 
     "warmers": {} } } 

インデックスと検証に挿入データの後に。

オートコンプリート単語を検索しようとしたときに、私はこの問題を取得する:私はそれが試合(ニューヨーク)を設立し「新しい」を検索しようとすると、

。しかし、もし私が が 'new y'の後にスペースと最初の文字を追加しようとすると、 が見つかりませんでした。スペースを追加しようとした後、 'new よ'の後に2文字を追加しようとしています。

主な問題はなぜ と単語の後に最初の文字がスペースが一致しないのですか?

例:

GET autosuggest_destination/destination/_search { "query": { 
     "match": { 
      "city": { 
      "query": "new", 
      "type": "phrase_prefix" 
      } 

      } } 

    Result : New York 


    GET autosuggest_destination/destination/_search { "query": { 
     "match": { 
      "city": { 
      "query": "new y", 
      "type": "phrase_prefix" 
      } 

      } } 

    No Result 

    GET autosuggest_destination/destination/_search { "query": { 
     "match": { 
      "city": { 
      "query": "new yo", 
      "type": "phrase_prefix" 
      } 

      } } 

Result : New York 

誰でも問題がどうあるべきか任意のアイデアを持っていますか?

答えて

0


文書の索引付け時にElasticsearchを使用すると、値を検索するときにアナライザ(デフォルトまたはカスタム)が使用されているため、文書を用語に分割して検索したいものと一致させます。
例: ニューヨークは、デフォルトのアナライザで分析され、2つの用語New、Yorkに分割されます。
新しいものを検索すると、最初の用語が見つかるでしょう新しい、それはあなたに応答ニューヨークを与えるでしょう。 New Yで検索すると、New、YまたはNew、Yoの2つの用語に検索が分割され、これらの2つの用語に一致する文書が検索されます。あなたが遭遇する問題は、max_expansions paramからのものかもしれません。
こちらをご覧くださいhttp://elasticsearch-users.115913.n3.nabble.com/How-exactly-works-quot-max-expansions-quot-in-match-phrase-prefix-query-td4030146.html アナライザーについても。

https://www.elastic.co/guide/en/elasticsearch/reference/current/analysis-analyzers.html

+0

Thx、問題は修正されましたが、max_expansionsはアイテム数と同じ大きさで保護された結果が得られるはずですか? –

+0

あなたはあいまいで一致クエリを試しましたか? https://www.elastic.co/guide/en/elasticsearch/guide/current/fuzzy-match-query.html – mariobyn

0

私は(結果execpted:ニューヨーク)に、このような「ORK」として部分的単語を照会したい場合は、何もヒットはありません 。 私はドキュメンテーションのガイドを探していました。私が見つけることができるのは、クエリをワイルドカードに変更することです。 しかし、私はphrase_prefixを使って部分的な単語でも検索することができます。 これは可能ですか?