0

2 週間前にプロジェクトで ElaticSearch (バージョン 2.4.1) を使用したばかりですが、クエリ文字列でフィールドを指定すると問題が発生します。
クロモジプラグインとn-gramトークナイザーを使って日本語データを検索したいです。

私のクエリでは、フィールドを指定しないと (例: "コンテンツ")、結果に 2 つのレコードが返されます。

{
    "query" : {
        "bool" : {
            "must": {
                "query_string": {
                    "query":"Software"
                 /*,"fields":["Content"] <-- not specify this field*/
                }
            }
        }
    }
}

しかし、上記のクエリで「コンテンツ」フィールドを使用すると、結果にレコードがありません。(私のプロジェクトでは、「コンテンツ」フィールドで検索したい。)

ステップ 1 で「ハイライト」属性も使用していますが、結果に「ハイライト」ブロックが含まれていません。

{...
    "highlight": {
        "pre_tags" : ["<tag1>"],
        "post_tags" : ["</tag1>"],
        "fields" : {
            "*" : {} /* or use "_all" */
        }
    }
}

質問したいのですが、ステップ 2 (上記) で、クエリ文字列に指定されているフィールドは何ですか? product.Content、 または、他の何か?

黒文字プラグインを使用しない場合、手順 2 のクエリの結果は 2 つのレコードになります。だからクロモジプラグインが結果に関係していると思います。誰でもこの問題で私を助けることができますか?

yaml での私のマッピングと構成は次のとおりです。

{...
    "mappings": {
        "product" : {
            "properties" : {
                "Content" : {
                    "index": "not_analyzed",
                    "search_analyzer": "ja",
                    "analyzer": "ja",
                    "type": "string",
                    "store": true
                } ...
            }
        }
    }
}

index :
 analysis :
  analyzer :
   ja :
    type : custom
    tokenizer : ja_tokenizer
    char_filter : [
     html_strip,
     kuromoji_iteration_mark
    ]
    filter : [
     lowercase,
     cjk_width,
     katakana_stemmer,
     kuromoji_part_of_speech
     ]
    ja_ngram :
     type : custom
     tokenizer : ngram_ja_tokenizer
     char_filter : [html_strip]
     filter : [
      cjk_width,
      lowercase
     ]
  tokenizer :
   ja_tokenizer :
    type : kuromoji_tokenizer
    mode : search
    user_dictionary : userdict_ja.txt
   ngram_ja_tokenizer :
    type : nGram
    min_gram : 2
    max_gram : 3
    token_chars : [letter, digit]
  filter :
   katakana_stemmer :
   type : kuromoji_stemmer
4

1 に答える 1

0

マッピングに問題が見つかりました。私のマッピングでは、"Content": {"index":"not_analyzed"} を使用しているため、"Content" フィールドを検索できません。{"index" : "analyzed"} に変更すると、問題が修正されました。

于 2016-11-01T10:04:34.843 に答える