使用しているのは、Elasticsearch6.2です。
次のようなデータから名詞単語のSuggest機能を作れないか検討しています。
例えば、「役割」というインプット文字列を渡すと、「役割等級」「役割等級制度」というような単語が返ってくるような動きを期待しています。
Elasticsearchの知見がまだまだ浅いため、理解できていないところが多いのですが、
データをPutしたときに下例ですと「質問」に「SampleData」の「質問文字列」、「質問.meishi」にAnalizeされた文字列が入っているものと創造しています。
試行錯誤中に試したやり方ですが、以下のようにaggrigationを実行すると、Bucketの中にAnalizeされた単語が入っていることは確認できました。
GET _search
{
"aggs": {
"my_sampler": {
"sampler": {"shard_size": 100 },
"aggs": { "my_keywords": { "significant_text": { "field": "質問.meishi" }}}
}
}
}
ただ、取得されるのが、 全ての文字列「"役割等級制度と呼ばれる制度は色々あるようですが、どのような違いがあるのでしょうか?"」であって、冒頭でやりたいような単語を取得することができません。
そもそも一旦Suggest用のIndexを生成する必要があるのかと悩んでおります。
ご助言、参考になるような情報がございましたら頂けないでしょうか。
よろしくお願いいたします。
・Sample Data
{
"ID": 1,
"種類": "人事",
"質問": "役割等級制度と呼ばれる制度は色々あるようですが、どのような違いがあるのでしょうか?"
}
・定義ファイル
{
"settings": {
"analysis": {
"tokenizer": {
"kuromoji": {
"type": "kuromoji_tokenizer",
"mode": "search",
}
},
"filter": {
"ja_meishi_filter": {
"type": "kuromoji_part_of_speech",
"stoptags": [
"名詞-代名詞",
"名詞-代名詞-一般",
"名詞-代名詞-縮約",
"名詞-数",
"名詞-非自立",
"名詞-非自立-一般",
"名詞-非自立-副詞可能",
"名詞-非自立-助動詞語幹",
"名詞-非自立-形容動詞語幹",
"名詞-特殊-助動詞語幹",
"名詞-接尾",
"名詞-接尾-一般",
"名詞-接尾-人名",
"名詞-接尾-地域",
"名詞-接尾-サ変接続",
"名詞-接尾-助動詞語幹",
"名詞-接尾-形容動詞語幹",
"名詞-接尾-副詞可能",
"名詞-接尾-助数詞",
"名詞-接尾-特殊",
"名詞-接続詞的",
"名詞-動詞非自立的",
"名詞-引用文字列",
"名詞-ナイ形容詞語幹",
"接頭詞",
"接頭詞-名詞接続",
"接頭詞-動詞接続",
"接頭詞-形容詞接続",
"接頭詞-数接続",
"動詞",
"動詞-自立",
"動詞-非自立",
"動詞-接尾",
"形容詞",
"形容詞-自立",
"形容詞-非自立",
"形容詞-接尾",
"副詞",
"副詞-一般",
"副詞-助詞類接続",
"連体詞",
"接続詞",
"助詞",
"助詞-格助詞",
"助詞-格助詞-一般",
"助詞-格助詞-引用",
"助詞-格助詞-連語",
"助詞-接続助詞",
"助詞-係助詞",
"助詞-副助詞",
"助詞-間投助詞",
"助詞-並立助詞",
"助詞-終助詞",
"助詞-副助詞/並立助詞/終助詞",
"助詞-連体化",
"助詞-副詞化",
"助詞-特殊",
"助動詞",
"感動詞",
"記号",
"記号-一般",
"記号-読点",
"記号-句点",
"記号-空白",
"記号-括弧開",
"記号-括弧閉",
"記号-アルファベット",
"その他",
"その他-間投",
"フィラー",
"非言語音",
"語断片",
"未知語"
]
}
},
"analyzer": {
"ja_meishi_analyzer": {
"type": "custom",
"char_filter": [
"icu_normalizer"
],
"tokenizer": "kuromoji",
"filter": [
"lowercase",
"cjk_width",
"ja_meishi_filter",
"kuromoji_baseform"
]
}
}
}
},
"mappings": {
"question": {
"properties": {
"質問": {
"type": "keyword",
"fields": {
"meishi": {
"type": "text",
"analyzer": "ja_meishi_analyzer"
}
}
}
}
}
}
}