2016-04-28 26 views
0

これは私のインデックスをマッピングする方法です。ElasticSearchでの単語の一致

settings = new ConnectionSettings(pool) 
       .DefaultIndex(defaultIndex) 
       .MapDefaultTypeNames(m => m.Add(typeof(MyClass), "content")) 
       .PrettyJson() 
       .DisableDirectStreaming()); 

私は

コンテンツとESにドキュメントをインデックス化しているとしましょう:「ティム・クックは、インドでのiPhoneの販売 は、にもかかわらず、毎年56%成長したと収益通話中に明らかにしました同社初の は13年間で世界的な売上高の減少をもたらしました。今

一致クエリ

{ 
    "query": { 
    "match": { 
     "answer": { 
     "query": "decline" 
     } 
    } 
}} 

を使用して、単語のためのユーザーの検索は、私が0.047のスコアを取得すると言っている場合。

しかし、同じクエリで私はを「減少」という言葉を検索した場合、私は言葉が部分的に文書の存在であるかどうかをチェックしたい0のスコアを取得。これどうやってするの?

答えて

1

コンテンツフィールドを分析するために特定のアナライザを宣言することによって、フィールドマッピングを定義する必要があります。この場合、英文の文法上の規則に従ってトークンを省略するenglish language analyzerを使用することができます。

PUT your_index 
{ 
    "mappings": { 
    "your_type": { 
     "properties": { 
     "content": { 
      "type": "string", 
      "analyzer": "english" 
     } 
     } 
    } 
    } 
} 

次に、あなたが最終的にあなたがインデックスあなたのコンテンツを

PUT /your_index/your_type/1 
{ 
    "content": "Tim Cook revealed during the earnings call that iPhone sales in India grew by 56% on a yearly basis, despite the company's first global sales decline in 13 years." 
} 

そしてdeclinedecliningの両方を検索し、同じスコア

POST /your_index/_search 
{ 
    "query": { 
    "match": { 
     "content": { 
     "query": "decline" 
     } 
    } 
    } 
} 

POST /your_index/_search 
{ 
    "query": { 
    "match": { 
     "content": { 
     "query": "declining" 
     } 
    } 
    } 
} 
+0

を得る。しかし、それは、既存のマッピングを変更することが可能であることができます。私はすでにアプリケーションを実行しているからです。上記のマッピングにマッピングを変更するにはどうすればよいですか? – ASN

+0

マッピングを変更することはできません。既存のインデックスを削除し、私が与えたマッピングで再作成することができます。その後、データのインデックスを再作成する必要があります。つまり、インデックスを再作成します。 – Val

+0

ありがとうございます。 LINQとアナライザータイプを使ってマッピングを変更する際に助けてください。私は質問のインデックスマッピングを更新しました。 TIA :) – ASN

関連する問題