# インデックスされているコンテンツデータから単語を抽出したい。

**URL:** <https://discuss.elastic.co/t/topic/126885>\
**Category:** 日本語による質問・議論はこちら\
**Created:** [April 5, 2018, 9:16am UTC](https://discuss.elastic.co/t/topic/126885 "2018-04-05T09:16:29Z")\
**Posts on this page:** 1\
**Showing post:** 2

<div class="post-metadata">

**Author:** ![mkokui](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/mkokui/32/28320_2.png) [@mkokui](https://discuss.elastic.co/u/mkokui)\
**Post date:** [April 6, 2018, 3:17am UTC](https://discuss.elastic.co/t/topic/126885/2 "2018-04-06T03:17:15Z")

</div>

私もElasticsearchを触って1ヶ月程度の初心者です。  
同様にSuggest機能を検討しまして、ここで相談したときのスレッドがございますので、そちらを共有します。

> [@Analyzeされたワードの一部を取得することはできますか？](https://discuss.elastic.co/t/analyze/121980):
>
> 使用しているのは、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":…

Suggestに関してましては、私もSuggest用のIndexを作成して、そのIndex対して前方一致なりの実装が必要と理解しました。Suggest用のIndexを作成するのが面倒だったので、私の場合は、significanttext-aggregation を使う方法を採りました。

> **[Significant text aggregation | Elasticsearch Guide \[master\] | Elastic](https://www.elastic.co/guide/en/elasticsearch/reference/master/search-aggregations-bucket-significanttext-aggregation.html)**

サンプルクエリですが、入力文字列がマッチするドキュメントに対して、significanttexのaggregationをかけています。実行結果として入力文字列と関連が強い名詞の一覧を取得できますので、それをSuggestとして使用しています。

```auto
GET {index}/{type}/_search
{
    "size": 0,
    "query": {
        "bool" : {
            "should" : [
                { "match" : {"fielditem.kuromoji": "入力文字" }}
            ]
        }
    },
    "aggs": {
        "my_keywords": {
            "significant_text": {
                "field": "fielditem.meishi",
                "filter_duplicate_text": true
            }
        }
    }
}

```

この方法で得られたSuggestはまだこちらでも検証段階なので、精度等については調整が必要かと思います。

---

_[View the full topic](https://discuss.elastic.co/t/topic/126885)._
