2016-04-01 9 views
0

私が取り組んでいるプロジェクトは、検索エンジンとしてelasticsearchを利用しています。また、グラフデータベースを使用して、ユーザーの操作やクエリ、クリックなどの関係を把握しています。別のクエリの結果を使用してelasticsearchの関連性スコアを変更する

私がしたいことは、インデックスクエリとグラフデータベースの上位結果をelasticsearchにインデックスすることです、私はグラフデータベースによって提供されるスコアによってelasticsearch_scoreを引き上げることができます。これはelasticsearch自体で可能ですか?あるいは、私は外部的にブースティングを行う必要がありますか?

+0

グラフのDBクエリの結果を一時的なインデックスのいくつかの種類でESに格納するつもりですか?または、すべてのドキュメントが常にESインデックスにありますか? – macebalp

+0

@macebalp別のインデックスに別のランキングを格納することを考えていますが、これは 'alt_rankings'と呼ばれます。これは、検索タームが与えられた上位ランクのドキュメントを含むドキュメントを検索します。同時に、私はESのトップランクのドキュメントの他の主要なインデックスを照会したいと思います。私はESのスコアと、与えられたクエリ、ドキュメントのペアの 'alt_rankings'インデックスにあるスコアとを組み合わせたいと思っています。 –

答えて

0

スコア

によってブーストelasticsearchの_scoreをあなたはfunction score queryを使用してelasticsearchクエリの実行中にドキュメントのスコアを向上させることができます。

+0

関数スコアクエリ内の代替スコアをどのようにクエリできますか?これは、固定機能のために、または追加される文書上にあるフィールドの機能に対してのみ機能するようです。 –

+0

[フィールド値ファクタ機能スコア](https://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-function-score-query.html#function-field-価値要因)。 esスコアとフィールドの値を組み合わせることができます。 –

+0

私は機能スコアクエリのことを知っていますが、このニーズに対応できるかどうかはわかりません。私が見ていることから、あなたが増強している分野は、増強されている同じ文書の一部である必要があります。別のクエリのドキュメントのフィールドに基づいてそれを高める方法はありますか? –

2

問題がある場合は、別のソース(グラフDB)からの主な結果があり、スコアはElasticsearchの場合と同様にすべてのクエリに大きく依存します。 Script score ESの関数は、すべてのインデックス付きドキュメントのフィールドにアクセスする以外に、渡すパラメータが限られているため、このタスクには適していません。だから私が見ることができる唯一の選択肢は以下のとおりです。

  1. インデックス外部スコアを含め、その後、上記のスクリプトのスコアやfunction score単純なを使用してクエリを実行する主な結果。明らかな効率の欠点(ES、往復などの索引付けの負荷)に加えて、この索引には文書のサブセットのみが含まれ、用語の関連性に大きな影響を与えます。
  2. ESインデックスをフィルタリングし、新しいスコアがあなたに合っているかどうかを外部的に計算します。最初のクエリで見つかったドキュメントのみを取得したい場合は、のIDでthisなどのthisなどを試してください。したがって、ESスコアは用語で構成されていますあなたは探していたかったと思います。