web-dev-qa-db-ja.com

Elasticsearchは完全一致の重要性を高めます

Elasticsearchに、ドキュメントに表示される正確なフレーズの重要性を高める方法はありますか?

たとえば、「Web開発者」というフレーズを検索していて、「Web開発者」という単語が一緒に表示された場合、ドキュメント全体で「Web」と「開発者」が別々に表示されるのに比べて、5つ増えます。これにより、「Web開発者」を一緒に含むドキュメントが結果の最初に表示されます。

20
user2724314

bool query を使用して、さまざまなクエリを組み合わせることができます。また、それらにさまざまなブーストを割り当てることもできます。位置に関係なく、両方の用語に対して通常の 一致クエリ があり、その後、ブーストが高いフレーズクエリがあるとします。

次のようなもの:

{
  "query": {
    "bool": {
      "should": [
        {
          "match": {
            "field": "web developer"
          }
        },
        {
          "match_phrase": {
            "field": "web developer",
            "boost": 5
          }
        }
      ],
      "minimum_number_should_match": 1
    }
  }
}
26
javanna

javannaの答えの代わりに、mustクエリ内のshould句とbool句で同様のことを行うことができます。

{
  "query": {
    "bool": {
      "must": {
          "match": {
            "field": "web developer",
            "operator": "and"
          }
      },
      "should": {
          "match_phrase": {
            "field": "web developer"
          }
      }
    }
  }
}

テストされていませんが、ここのmust句は、both 'web'と 'developer'およびshould句は、「Web開発者」に一致するフレーズのスコアを高くします。

7
James Addison

Rescoreを使用して、最初の結果で完全一致のフレーズ一致を実行してみることができます。ドキュメントから:

「再スコアリングは、インデックス内のすべてのドキュメントにコストのかかるアルゴリズムを適用する代わりに、セカンダリ(通常はよりコストのかかる)アルゴリズムを使用して、クエリフェーズとpost_filterフェーズによって返される上位(たとえば100〜500)のドキュメントのみを並べ替えることで精度を向上させるのに役立ちます。 「」

http://www.elasticsearch.org/guide/en/elasticsearch/reference/current/search-request-rescore.html

2
Bailey Smith

動作している私の場合、以下のサンプルクエリを使用しました。それは正確な+あいまいな結果をもたらしますが、正確な結果は後押しされます!

{ "query": {
"bool": {
  "should": [
    {
      "match": {
        "name": "pala"
      }
    },
    {
      "fuzzy": {
        "name": "pala"
      }
    }
  ]
}}}
1
csonuryilmaz

デフォルトの動作はすでに一致クエリ「または」演算子を使用していると思います。最初に「webdeveloper」というフレーズをフィルタリングし、次に「web」や「develeper」などの用語をフィルタリングします。あなたは上記の答えを使ってあなたの質問を後押しすることができますが。私が間違っている場合は私を訂正してください。

0
bunny