1

フィールドで、ステミングに焦点を当てたカスタムフィルターを持つカスタムアナライザーを設定したいので、「フラッシュカード」と「フラッシュカード」は同じルートにステミングされ、同じ結果を返します

次のクエリを実行するとヒット (素晴らしい) が得られますが、「フラッシュ カード」と「フラッシュ カード」はそれぞれ異なる結果を返します。

{"query_string": {
     "fields": ["description"],
     "query": query
     }
}

しかし、次のクエリを実行しても結果が得られません:

{"query_string": {
     "fields": ["description.analyzed"],
     "query": query
     }
}

以下の私のマッピングを見ると、同じ構成description.analyzeddescription持っていることがわかります。つまり、各フィールドは同じように動作し、ステミングが発生するはずですか?

アナライザーが使用されていることをどのように確認できますか?

インデックスの私のマッピング:

{'mappings': {
    'file': { # doc_type
      'properties': { # properties for doc_type
        'description': { # field called description
          'type': 'multi_field', # to allow "sub fields" with different alalysers
          'fields': {
            'description': {'type': 'string', 'analyzer': 'my_analyser'},
            'analysed': {'type': 'string', 'analyzer': 'my_analyser'}
          }
        },
      }
     }
    },
    'settings': {
        'analysis': {
          'filter': { #declare my custin filters
            'filter_ngrams': {'max_gram': 5, 'min_gram': 1, 'type': 'edgeNGram'},
            'filter_stop':{'type':'stop', 'enable_position_increments': 'false'},
            'filter_shingle':{'type': 'shingle', 'max_shingle_size': 5, 'min_shingle_size': 2, 'output_unigrams':'true'},
            'filter_stemmer' : {'type': 'stemmer', 'name': 'english'}
          },
          'analyzer': { # declare custom analyzers
            'my_analyser': {
              'filter': ['standard', 'lowercase', 'asciifolding', 'filter_stop', 'filter_shingle', 'filter_stemmer'],
              'type': 'custom',
              'tokenizer': 'standard'
            },
          }
        }
      }
    }
4

1 に答える 1