問題タブ [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.

0 投票する
1 に答える
428 参照

solr - solr : トークナイザー後にクエリ用語をブーストする方法

検索語が「ABCD」の場合、トークン化すると「A」「BC」「D」になります。用語「BC」をブーストしたいので、クエリ ワードは次のようになります。

ユーザーが入力するすべてのクエリ ワードは、そのように自動的に処理されるため、重要なクエリ タームがブーストされます。

それを行うために新しいトークナイザーをカスタマイズできると思いますが、それが実現可能かどうか、または他のより簡単な方法があるかどうかはわかりません。

0 投票する
1 に答える
327 参照

search - solr boost relevant documents with more content

I have documents containing few words, few sentences and documents containing a lot of text. When the user searches something, solr gives first the docs with least text as most relevant and at the end gives the docs with the most text. But concering the user, the relevance should be different. The first results should be relevant, but also needs to contain more text because the user needs to get the most relevant docs but with more text - to read something.

So how can I get relevant docs first, but those with more text first, not those with several words. I am using one text field and search inside it.

0 投票する
1 に答える
593 参照

search - 範囲内の solr アイテムをブースト: ファセット検索はオプションですか?

非常に具体的な順序で Solr のアイテムの長いリストを作成したいと考えています。Solrファセットの経験はありません.範囲内でさまざまなアイテムを少しブーストできる日付範囲で結果をグループ化する良い方法ですか?

注文の原則

  1. すべての項目は一般的に時系列順に並べる必要があります
  2. この順序は、特定の範囲ごとに厳密にする必要があります
  3. その範囲内のアイテムはもう少し優先されるかもしれません
  4. この範囲内のアイテムは非常に高い優先度を持つ可能性があります
  5. 完全なリストでは、一部のアイテムが範囲外であり、上部に固執する場合があります

構成例

したがって、アイテムのテーブルがある場合、次のようになります。

  1. 粘着性のあるアイテムは 100% 上に表示されます
  2. イベントはブログより優先度が高い
  3. 特集は常に範囲内でトップにある
  4. 範囲は 1 週間 (7 日間) に設定されます

これは次のようになります (例 1 )。

または (例 2、破線は単に週の境界を示すためのものです):

または (例 3 ):

(明確にするために、イベントの優先度の量(1日または2日またはx%は微調整のためのものであり、現時点では私の問題の一部ではありません)

質問

ここで質問です。フィールドごとまたはフィールド値ごとに、アイテムを特定の量または高い値でブーストして、それを一番上に押し上げることができることを知っています。ただし、これを特定の範囲 (例では 7 日間) に制限する必要があります。イベントと同じように、注目のイベントは 1 週間の範囲から外れることはありません。

ファセットについて聞いたことがありますが、これで問題が解決するかどうかはわかりません。私はsolrの素人なので、これを達成できるかどうかを判断するのは困難です。私はsolr wikiを見てきましたが、すべての新しい用語は、このアイデアに対する私の検索を少し混乱させます.

「ページネーション」を日付範囲として使用することでこれを解決できます (つまり、[日付] から [日付] までを検索します)。そのため、自分で「ファセット」を作成します。それは簡単ですか?ご覧のとおり、ファセットと複雑な solr クエリについてはわかりません :)

0 投票する
1 に答える
1219 参照

solr - Solr:部分一致中にフルワードでドキュメントをブーストする

完全一致と部分一致の両方をサポートするSOLRクエリがあります。クエリ用語には適切なブースト係数が追加されており、完全一致では部分一致と比較してブーストが高くなります。

ただし、部分一致内でも、ブースト係数を次のように定義する必要があります。

完全な単語を持つ部分一致は、単語の一部として表示される部分一致よりも優先されます。

例:ユーザーが文字列「AnnieHall」を検索した場合、「Tanner Hall」、「Hall Pass 」などの値を含むドキュメントは、「 Halloween」などの値と比較して重み(優先度)が高くなります。 、「「ハロウィンを救った犬」。すべて部分一致ですが、「タナーホール」と「ホールパス」では「ホール」が別語で表示されるため、スコアが高くなるはずです。

助けてください。

よろしく、

0 投票する
1 に答える
2120 参照

sorting - solrクエリと関連性に苦労している

Solrを使用するとブーストに問題があります。最近、LuceneからSolrに切り替えました。

検索対象となる4つの(プライマリ)検索フィールドがあります。エッセンス、キーワード、allSearchable、および品質。ここで、インデックス内の各ドキュメントについて、エッセンスにはキーワードの最初の3つのノンストップワードが含まれています。「キーワード」は単なるキーワードのリストです。また、「allSearchable」は、特定のドキュメントの他のデータの単なるコレクションであるデータを保持します。luceneで行ったことは、ユーザーが検索ボックスに入力した任意の検索に対して3回の検索を行うことでした(検索結果を関連性でランク付けするため)。

検索ボックスに入力された単語:tree

クエリ1:( +essence:tree「品質」で並べ替え)クエリ1が取得したいページに対して十分な値を返した場合は、戻ります。

クエリ2:( +keywords:tree「品質」で並べ替え)クエリ1とクエリ2の組み合わせが、現在のページに対して十分な結果を返した場合は、結果を返します。

クエリ3:( +allSearchable:tree「品質」で並べ替え)結果を返します。ない場合は、頑張ってください。

私の問題はページ付けです。Luceneにページネーション(startIndex、rows)を送信する必要はありませんでした。求めていたページに応じて、すべてを要求してから、戻ってきたものをすべてロールオーバーして、返すのに十分な結果を収集することができました。Solrでは、ページ付けパラメーターを渡す必要があります。インデックスには800万を超えるドキュメントがあるため、「tree」などのクエリに一致するすべてのものを取得するにはコストがかかりすぎます。問題は、クエリ1でページ3を要求し、十分な結果が得られない場合は、クエリ2(keywords:tree)に進む必要があることです。しかし、これは正しくありません。クエリ2のページ3の結果を要求しているためです(つまり、ページ3の'keywords:tree'に一致するすべてのドキュメントを取得してください)。しかし、それは私が聞きたい質問ではありません。エッセンスが何にも一致しない場合にのみ、キーワードの1ページ目を要求したいと思います。等々。

私が本当に探しているのは1つのクエリです。これは、以前に行った3つのクエリに十分であり、エッセンスの一致が最初に返され、キーワードが2番目に一致し、allSearchableが最後に一致します。

私はこのクエリでブーストを使用してみました: essence:tree^4.0 keywords:tree^2.0 allSearchable:tree^1.0

しかし、これはうまくいかないようです、そして私は理由がわかりませんか?私は種類を取り出しました、そして、物事はまだ私に正しい結果を返しません。デフォルトのStandardRequestHandler(LuceneQueryParser(dismaxまたはedismaxではない)を使用しているようです)を使用しています。URLのsolrにブーストが送信されていることがわかります(リクエストハンドラーのデフォルトセクションにqfパラメーターを追加してブーストを使用しています。 solrconfig.xml)。luceneがこれらのパラメーターを理解できることは確かに知っています。上記のように、希望する結果を得ることができる1つのクエリを作成する方法を教えてもらえますか?enter code here

0 投票する
1 に答える
816 参照

date - 日付フィールドを使用したjsonファイルのSolrインデックス時間ブースト

私のsolr検索で、タイトルに一致する最新のドキュメントが一番上に来ることを願っています。速度を上げるために、これをインデックス時に(クエリ時ではなく)実行したいと考えています。

インデックス時にタイトルと日付を使用してスコアを上げようとしました (タイトルは上げられますが、日付の値ではありませんか?)。ドキュメントといくつかのスタックフローの応答は、それができることを示唆していますが、どのように? ドキュメント日付のSolrインデックス時間ブースト

例: JSON ファイル "datetest.json" に、同じタイトルで日付が異なる 4 つのドキュメントがあります。

datetest.json は、..

curl ' http://localhost.com:8983/solr/update/json?commit=true ' --data-binary @datetest.json -H 'Content-type:application/json'

クエリは.. http://localhost.com:8983/solr/collection1/select?q=test_title

結果を期待.. test04->test03->test02->test01

実際の結果.. test02->test01->test03->test04

インデックス時に最新の日付でブーストするようにsolrに指示するにはどうすればよいですか? ありがとう

0 投票する
1 に答える
256 参照

solr - SOLR: レコードのブースト値としてフィールドを指定できますか?

SOLRを使用しています。私は体重と呼ばれるフィールドを持っています。この価値を持って、すべてのレコードを後押ししたいと思っています。設定ファイルで指定する方法はありますか?