私は2週間前から私のプロジェクトでElaticSearch(バージョン2.4.1)を使用しましたが、クエリ文字列にフィールドを指定すると問題があります。
日本のデータを検索するには、黒丸プラグインとn-gramトークナイザを使いたいです。ElasticSearch 2.4.1とKuromojiプラグインが検索クエリに指定されました
私の質問では、フィールド(例: "Content")を指定しないと、結果に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の私のマッピングとconfigです:
{...
"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