22

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

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

4

6 に答える 6

30

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

次のようなもの:

{
  "query": {
    "bool": {
      "should": [
        {
          "match": {
            "field": "web developer"
          }
        },
        {
          "match_phrase": {
            "field": "web developer",
            "boost": 5
          }
        }
      ],
      "minimum_number_should_match": 1
    }
  }
}
于 2013-08-28T11:24:17.803 に答える
8

javanaの答えの代わりに、クエリ内でmustandshould句を使用して同様のことを行うことができます。bool

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

テストされていませんが、ここの句は「web」と「developer」の両方mustを含む結果に一致し、句は「web developer」に一致する句のスコアを高くすると思います。should

于 2013-08-29T16:28:13.957 に答える
3

rescore を使用して、最初の結果に対して正確なフレーズ一致を実行してみてください。ドキュメントから:

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

https://www.elastic.co/guide/en/elasticsearch/reference/current/filter-search-results.html#rescore

于 2015-02-06T18:29:22.383 に答える
1

私の場合、以下のサンプルクエリを使用しましたが、これは機能しています。正確な結果とあいまいな結果が得られますが、正確な結果がブーストされます!

{ "query": {
"bool": {
  "should": [
    {
      "match": {
        "name": "pala"
      }
    },
    {
      "fuzzy": {
        "name": "pala"
      }
    }
  ]
}}}
于 2014-05-28T16:01:19.430 に答える
0

デフォルトの動作は、一致クエリの「または」演算子で既に行われていると思います。最初に「web 開発者」という語句をフィルター処理し、次に「web」や「開発者」などの語句をフィルター処理します。上記の回答を使用してクエリを後押しすることはできますが。私が間違っている場合は修正してください。

于 2014-05-29T06:54:46.643 に答える