# 検索の精度を上げるアプローチの仕方

**URL:** <https://discuss.elastic.co/t/topic/61728>\
**Category:** 日本語による質問・議論はこちら\
**Created:** [September 28, 2016, 5:29pm UTC](https://discuss.elastic.co/t/topic/61728 "2016-09-28T17:29:50Z")\
**Posts on this page:** 6\
**Page:** 1

<div class="post-metadata">

**Author:** ![eng\_toshiki](https://avatars.discourse-cdn.com/v4/letter/e/ecc23a/32.png) [@eng\_toshiki](https://discuss.elastic.co/u/eng_toshiki)\
**Post date:** [September 28, 2016, 5:29pm UTC](https://discuss.elastic.co/t/topic/61728/1 "2016-09-28T17:29:51Z")

</div>

お世話になっております。  
現在ElasticCloudを利用し、全文検索の構築を行っております。

掲題の通り、検索の精度についての質問です。

ex)

探したいワード：渋谷ヒカリエ

上記にでヒットすることがきる検索ワード  
・渋谷  
・ヒカリ  
・エ

トークナイズ(kuromoji)の結果が上のように分割されているため

ヒカリエ

という検索ワードでヒットさせてことができません。  
渋谷ヒカリエはほんの例で、最近の言葉や人名に対応させるためには通常辞書のインポート等必要になるかと思っています。

ElasticCloudの利用（クレカ登録で正式利用）では、気軽に辞書のインポートができないという認識なのですが、こういった検索精度をあげたい場合のアプローチはどのようなものがあるかご教授して頂きたいです。

抜粋になりますが、analysisの設定は下記のようにしてます。

```auto
        "analysis": {
          "filter": {
            "greek_lowercase_filter": {
              "type": "lowercase",
              "language": "greek"
            },
            "pos_filter": {
              "type": "kuromoji_part_of_speech",
              "stoptags": [
                "助詞-格助詞-一般",
                "助詞-終助詞"
              ]
            }
          },
          "analyzer": {
            "kuromoji_analyzer": {
              "filter": [
                "kuromoji_baseform",
                "pos_filter",
                "greek_lowercase_filter",
                "cjk_width"
              ],
              "type": "custom",
              "tokenizer": "kuromoji_tokenizer"
            }
          }

```

辞書以外にもなにかうまい方法がないかもなにかございましたらよろしくお願いします。

---

<div class="post-metadata">

**Author:** ![johtani](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/johtani/32/44956_2.png) [@johtani](https://discuss.elastic.co/u/johtani)\
**Post date:** [October 7, 2016, 3:57am UTC](https://discuss.elastic.co/t/topic/61728/2 "2016-10-07T03:57:23Z")

</div>

フレーズ検索をすれば、「ヒカリエ」で検索できると思うのですが。

どういった検索クエリを投げているのでしょうか？

---

<div class="post-metadata">

**Author:** ![eng\_toshiki](https://avatars.discourse-cdn.com/v4/letter/e/ecc23a/32.png) [@eng\_toshiki](https://discuss.elastic.co/u/eng_toshiki)\
**Post date:** [October 11, 2016, 1:12pm UTC](https://discuss.elastic.co/t/topic/61728/3 "2016-10-11T13:12:32Z")

</div>

ご返答ありがとうございます。  
検索クエリは下記になります

```auto
{
  "query" : {
    "simple_query_string" : {
      "fields": ["address"],
      "query": "ヒカリエ"
    }
  }
}

```

mapping

```auto
{
    "_all": {
        "enabled": false
    }, 
    "_source": {
        "enabled": true
    }, 
    "properties": {
        "address": {
            "analyzer": "kuromoji_analyzer", 
            "index": "analyzed", 
            "store": true, 
            "type": "string"
        }
    }
}

```

よろしくお願いします。

---

<div class="post-metadata">

**Author:** ![johtani](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/johtani/32/44956_2.png) [@johtani](https://discuss.elastic.co/u/johtani)\
**Post date:** [October 14, 2016, 6:41am UTC](https://discuss.elastic.co/t/topic/61728/4 "2016-10-14T06:41:24Z")

</div>

`simple_query_string`は[`default_operator`がORになっています](https://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-simple-query-string-query.html#query-dsl-simple-query-string-query)。

例えば「ヒカリエ」と入れた場合、最初に書かれていたように「ヒカリ」「エ」で分割されて、ORで検索されるので、うまく検索できないと感じられたと思います。  
`simple_query_string`の場合、「"」を利用することで、フレーズ検索にすることができます。  
（[その他のSyntax](https://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-simple-query-string-query.html#_simple_query_string_syntax)はこちらを参照のこと）  
この場合、「ヒカリ」「エ」で分割される場合の対応はできます。

ただ、辞書にない単語に関してはこれだけでは対応できない場合があるかと思います（予期しないトークナイズが発生するためにうまく検索できないなど）。

今回の質問の「精度」とはおそらく「再現率」の話だと思います。  
よりヒットしてもらう必要があると思いますので、n-gramなどと併用して検索漏れを無くす方向で対応してみるのはどうでしょうか？

---

<div class="post-metadata">

**Author:** ![eng\_toshiki](https://avatars.discourse-cdn.com/v4/letter/e/ecc23a/32.png) [@eng\_toshiki](https://discuss.elastic.co/u/eng_toshiki)\
**Post date:** [October 14, 2016, 6:51am UTC](https://discuss.elastic.co/t/topic/61728/5 "2016-10-14T06:51:37Z")

</div>

ご回答ありがとうございます。  
フレーズ検索やn-gramなどの併用を考えます。

ありがとうございました

---

<div class="post-metadata">

**Author:** ![system](https://us1.discourse-cdn.com/elastic/original/3X/1/a/1ac57faf039f6b580b3f104ef42a2a89e41014de.png) [@system](https://discuss.elastic.co/u/system)\
**Post date:** [July 6, 2017, 1:44pm UTC](https://discuss.elastic.co/t/topic/61728/6 "2017-07-06T13:44:53Z")

</div>


