# More\_this\_thisクエリ関する質問

**URL:** <https://discuss.elastic.co/t/more-this-this/59520>\
**Category:** 日本語による質問・議論はこちら\
**Created:** [September 1, 2016, 9:07am UTC](https://discuss.elastic.co/t/more-this-this/59520 "2016-09-01T09:07:03Z")\
**Posts on this page:** 4\
**Page:** 1

<div class="post-metadata">

**Author:** ![Takahiro\_Horike](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/takahiro_horike/32/11724_2.png) [@Takahiro\_Horike](https://discuss.elastic.co/u/Takahiro_Horike)\
**Post date:** [September 1, 2016, 9:07am UTC](https://discuss.elastic.co/t/more-this-this/59520/1 "2016-09-01T09:07:03Z")

</div>

## 実現したいこと

more\_this\_thisクエリを使ってブログメディアの関連記事を抽出するシステムを作っております。その中で以下の仕様を実現したいと考えています。

1. 特定の単語が本文に存在している記事はmore\_this\_thisの結果に出さない
2. 特定の単語が本文に存在している記事のmore\_this\_thisの結果のスコアをあげたい

## 現在試している方法

1に関してはstop\_wordsのオプションを。2に関してはboost\_termsのオプションを使用することで実現出来ると考え以下の様なクエリを作りました。

```auto
"more_like_this" : {
  "fields" : ["post_title","post_content"],
  "like_text" : "{記事本文}",
  "stop_words":["禁止ワード1","禁止ワード2","禁止ワード3"]
  "min_term_freq" : 1,
  "max_query_terms" : 50,
  "boost": 30.0
}

```

##質問内容  
結果としてstop\_wordsで指定した語句が含まれた記事は排除されず。boost\_termsに至っては特定の単語を設定するような仕様になっていないようで使い方そのものが不明な状態です。公式のドキュメントも目を通しましたが、ちょっと解決の目処が立たない状況です。

もしかするとstop\_wordsとboost\_termsオプションに対する私の解釈から間違っているのではないかと考えております。この辺り助言をいただけますと幸いです。

## Elasticsearchのバージョン

2.3

---

<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:** [September 5, 2016, 10:57am UTC](https://discuss.elastic.co/t/more-this-this/59520/2 "2016-09-05T10:57:47Z")

</div>

1.に関してはmore like thisの中でその単語を使わないだけであって、その単語を持ったドキュメントをフィルタリングする目的ではありません。  
ですので、特定の単語を持ったドキュメントを検索結果に含めたくない場合は[`bool`クエリ](https://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-bool-query.html)で`must_not`などで、含めたくない単語にヒットするクエリを検索条件として追加し、`must`に`more_like_this`を利用するような形がいいかと。

2.に関しては、[`function_score_query`](https://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-function-score-query.html)などで、特定の単語にヒットするクエリの場合にスコアを上げるといった操作をすれば良いかと思います。  
`more_like_this`の`boost_terms`は`more_like_this`に使われた単語すべてにブーストをかけるための機能ですので。

---

<div class="post-metadata">

**Author:** ![Takahiro\_Horike](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/takahiro_horike/32/11724_2.png) [@Takahiro\_Horike](https://discuss.elastic.co/u/Takahiro_Horike)\
**Post date:** [October 21, 2016, 1:57am UTC](https://discuss.elastic.co/t/more-this-this/59520/3 "2016-10-21T01:57:17Z")

</div>

ありがとうございました。上記で解決いたしました。

---

<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/more-this-this/59520/4 "2017-07-06T13:44:47Z")

</div>


