問題タブ [solr-boost]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
solr - Solrでブースティングを適用する方法
私はsolrを初めて使用します。フィールドのブーストで私を助けてください。
こんなお問い合わせがあり、
名前に500、説明に50のブースト/ウェイトエイジを適用したい.
例: 「テスト」用語が、あるレコードの名前フィールドに 1 回出現し、別のレコードの説明フィールドに 20 回出現すると考えてみましょう。ブースティング計算は次のように行われます。
名前の場合: 1 X 500 = 500
説明: 20 X 50 = 1000。
その結果、ブースト値の高いレコードが一番上に来るはずです。したがって、上記の計算に基づいて、説明フィールドに 20 件の一致があるレコードが、名前フィールドに 1 件の一致があるレコードの後に一番上に来るはずです。
誰かがこれに対する解決策を持っている場合は、提供してください
前もって感謝します。
solr - Solr: DataImportHandler を使用してインデックス時にフィールド ブーストを設定する
DataImportHandler を使用して、インデックス時にフィールド ブーストを設定する必要があります。私はこのようなことをしようとしました:
しかし、うまくいきません。それがエラーです:
私が行った別のアプローチは、スクリプトも使用しようとすることです(トランスフォーマーですが、フィールドでブーストを設定する構文がわかりません):
何か提案はありますか?
search - dismax または edismax を使用して SOLR でクエリをブーストするにはどうすればよいですか?
私はSOLRが初めてなので、ご容赦ください。そのため、世界中のさまざまな国にたくさんのホテルがあり、どこからでも検索できます。たとえば、東京にホテルがあり、このホテルをロンドンで検索したり、東京自体やニューヨークで検索したりすることもできます。
私が作成しようとしているクエリは、ホテルを検索し、現在の市場/国に基づいてホテルを返すだけでなく、さまざまな市場/国からの結果も返すことです。たとえば、私が英国にいる場合、市場は GB であり、GB に基づいて結果が返されます。GB は、JP (日本) などの他の市場を含めて結果の最上位に配置されますが、それらの結果は低く配置されます。
私がこれまでに行ったクエリは次のとおりです(これは機能しません):
簡単に実行できますがmarket:GB
、これは GB 市場のみを返します。
必要な結果を得るには、このクエリをどのように構成すればよいですか?
java - Solrが最新のドキュメントをブーストするだけで機能しない
多くのフォーラムを読み、いくつかの提案に従いましたが、これを機能させることができません。逆の順序で結果を取得します。つまり、非多値日付フィールドによるブーストにもかかわらず、最も古いものを最初に取得します。
スキーマで指定されたフィールド
と
フィールドを後押しするのに何らかの役割を果たす場合に備えてomitNorms
、さまざまな値を使用して、使用せずに試しました。precisionStep
ここで指定されたすべてのクエリを試しました。例えば、
さらに、私は試しました
また、関連性スコアを破棄する単純な並べ替えも行います。
実際、私は と の両方を試しasc
ていdesc
ます。かなり奇妙。最後に変更されたドキュメントが最後に表示され、最も古いドキュメントが最初に表示されるのはなぜですか? 私が間違っていることは何ですか?どんな助けでも大歓迎です!
search - ユーザーの行動を使用して SolR の結果を後押しする
SolR が Web サイトのユーザーの選択から「学習」できるようにしたいと考えています。つまり、ユーザーが検索を実行した後にどの製品をクリックしたかを知っているということです。そこで、SolR で索引付けされた各製品の [検索用語 => クリック数] のリストを収集しました。しかし、ユーザー入力に依存するブーストの方法がわかりません。ドキュメントのいくつかのキーと値のペアにインデックスを付け、boost パラメータで使用できる関数を使用して値を取得することは可能ですか?
はっきりしないので、具体例を追加します。
ユーザーが "garden chair" を検索すると、SolR は "green garden chair"、"blue chair"、"hamac for garden" の 3 つの製品を返したとします。予想通り、「グリーン ガーデン チェア」が 1 位、ハマックが最後でした。しかし、その後、「garden chair」を検索しているすべてのユーザーが hamac をクリックすることになります。
他の検索で得たランクを変更することなく、「ガーデン チェア」の検索でハマックが 1 位になるように手助けしたいと思います。したがって、キー=>値ベースのブーストを実行できるようにしたいと考えています。それは SolR で達成できますか?
このようなユーザー ベースの検索結果の改善を必要としているのは、私が最初ではないはずです。
前もって感謝します。
java - Solr 複数のブースト クエリ
Solr で静的値をブーストする最良の方法は何3.6.2
ですか?
各ドキュメントには1 つの(KeywordTokenized)source
値 (情報源) があり、いくつかは他よりも重要であると表現したいと思います。それが助けになるなら、完全なコンテンツ制御が可能です。
残念ながら、追加のブースト クエリはほとんど効果がありません。解析されたクエリは次のようになります (qux は qu にステミングされます)。
あまり考慮されていない上位 2 つの結果のデバッグ クエリbq=source:foo^10
興味深いことに、フィールドに値が含まれているにもかかわらず、最初の結果にはforがありません。 レンマタイゼーションのために少し異なりますqueryWeight
source
source
fieldNorm
solr - カスタム インデックス付き文字列フィールドを使用したブースト機能が機能しません。ソル3.6
Solr 3.6 を使用している既存の検索システムを改善しています
次の関数を使用して検索結果を後押ししようとしています:
- searchText - ユーザーが検索するテキスト。
- myField - カスタム インデックス付きドキュメントのフィールド。値は空または空の文字列ではない可能性があります。
つまり、この関数は、 myFieldの値がsomeTextと等しくないすべての検索結果の1000001スコアで除算します。このようにして、指定された myFieldの値を持つ結果が、元のスコアの順に並べられます。
このように、フィールドはそこにあり、値はフィールドに存在しますが、結果のスコアも分割され、結果はどこか深いところにあります...
私が使用する場合:
Solr は、フィールドの値が空の文字列ではない結果を除外します。ということで、認識され...
別の従来の文字列フィールドがあります。そのフィールドを使用して関数を適用すると、すべてが正常に機能します。しかし、自分のフィールドを使用すると失敗します。
何が間違っているのか、何か考えはありますか? 何を探すべきですか?
助けてください。私はまだ成功せずに多くの時間を費やしてきましたが、Solr は初めてで、これまでのところこの問題を解決できません...
ありがとうございました!
solr - SolrクエリでFIELDではなく特定のVALUEをブーストする
次の 2 つのクエリを検討してください。 query1: term1 term2 query2: term1 term1 term2 検索されたドキュメントの順序に違いはありますか?? つまり、solrはquery2の「term1」により多くの重みを与えます。私の理解によると、solrはそれを行う必要があります。しかし、よくわからないので、コミュニティからのコメントが必要です。
solr - Solr QueryElevationComponentのelevate.xmlでワイルド文字がサポートされていますか?
一部のドキュメントを常に昇格およびスキップできるようにsolrエンジンを構成する必要があるため、このドキュメントを参照していましたが、これがサポートされているかどうかはわかりません. 例 elevate.xml のサンプルのように、要素の "text" 属性を指定できますか?
何か案が?