2017-06-07 13 views
0

Azure Searchでインデックス定義を作成するときに、そのインデックスだけにストップワードを追加する方法はありますか?例えば、道路名を索引付けする場合、Road、Close、Avenueなどを取り除きたいとします。Azure Search - 追加のストップワード

フィールドを検索できないようにすると、すべてのものが1つの用語として索引付けされます。ビルケンコートロード。索引付けされる用語はBirken Courtであろうか。 多くのありがとう

答えて

0

custom analyzerを使用して追加のストップワードを定義できます。例えば 、私は標準トークナイザ、小文字トークンフィルタと2つのストップワードトークンフィルタ、1を使用テキストフィールドにカスタムアナライザを設定しています。このインデックス定義で

{ 
"name":"myindex", 
"fields":[ 
    { 
     "name":"id", 
     "type":"Edm.String", 
     "key":true, 
     "searchable":false 
    }, 
    { 
     "name":"text", 
     "type":"Edm.String", 
     "searchable":true, 
     "analyzer":"my_analyzer" 
    } 
], 
"analyzers":[ 
    { 
     "name":"my_analyzer", 
     "@odata.type":"#Microsoft.Azure.Search.CustomAnalyzer", 
     "tokenizer":"standard_v2", 
     "tokenFilters":[ 
      "lowercase", 
      "english_stopwords", 
      "my_stopwords" 
     ] 
    } 
], 
"tokenFilters":[ 
    { 
     "name":"english_stopwords", 
     "@odata.type":"#Microsoft.Azure.Search.StopwordsTokenFilter", 
     "stopwordsList":"english" 
    }, 
    { 
     "name":"my_stopwords", 
     "@odata.type":"#Microsoft.Azure.Search.StopwordsTokenFilter", 
     "stopwords": ["road", "avenue"] 
    } 
] 
} 

標準的な英語のストップワードと、ストップワードの追加セットのためのものです。あなたは、例えば、Analyze APIでカスタム・アナライザの動作をテストすることができます

要求:

{ 
    "text":"going up the road", 
    "analyzer": "my_analyzer" 
} 

応答:

{ 
    "tokens": [ 
    { 
     "token": "going", 
     "startOffset": 0, 
     "endOffset": 5, 
     "position": 0 
    }, 
    { 
     "token": "up", 
     "startOffset": 6, 
     "endOffset": 8, 
     "position": 1 
    } 
    ] 
} 

アナライザが非検索可能なフィールドには適用されません、したがって、あなたの例のストップワードは削除されません。クエリとドキュメント処理の詳細については、How full text search works in Azure Searchを参照してください。

+0

多くのありがとうございます。非常に役立ちます。ストップワードを削除するが、他のものはそのまま残すアナライザを作成する方法はありますか?すなわち、ストップワードに「道路」が含まれている場合、アナライザーはバーケンコートロードを「ビルケンコート」としてトークン化します。再度、感謝します。 – user2981411

関連する問題