問題タブ [edismax]
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 - multiValued フィールドで一致が得られません
edismax defType および multiValued フィールドを使用すると、一致が得られません。
および schema.xml 定義。
ドキュメントを確認すると、完全に一致するドキュメントが返されます。
しかし、次のクエリを実行すると、numFound は 0 です。
これは、multiValued="false" フィールドでは発生しません。
何か案は?
solr - リバース Solr 範囲クエリ
SOLR を使用してデータ分析を行っていますが、大きな価値をもたらす可能性のある 1 つの部分に行き詰まっています。
範囲である多数の数値フィールドを持つ solr コレクションがあります。次に例を示します。
各最小/最大の組み合わせは価格帯を提供し、高/中の部分はその範囲で現在のグループ内のアイテムの数によって導き出されます。いくつかのファンキーな数学については触れません.
商品価格を使用して solr にクエリを実行し、その価格が範囲の 1 つであるドキュメントを取得する必要があります。高いフィールドが med フィールドよりも優先されるように、それに重みを割り当てることができる必要があります。これは基本的に逆 RANGE 検索です。
私が照会している他のフィールドがあるため、これは重み付けに含める必要があります。これも fq にはできません。アイテムがこの基準に一致しない場合、一致する可能性のある他のフィールドがあるためです。
これまでのところ、この関数クエリを組み立てることができました。
8 は渡す価格です。基本的に、これは価格が範囲内にあるかどうかを確認し、範囲内にある場合は値を返します。高値は 5、中値は 3、安値は 1 です。 . 理想的には、これを通常の重み付けに含めたいのですが、これをサブクエリとして追加できませんでした。さらに、それをブーストしようとすると、「Infinite Recursion detected parsing query 'pr_high_max:[8 TO *]'」が返されます
誰かが前にこのようなことに遭遇したことがありますか? 何か案は?
また、進行中のデータを制御できるので、解決が容易になる場合は、データを簡単にマッサージして別の方法で範囲を表すことができます。
前もって感謝します
java - Solr クエリの実行
以下のようなクエリはどのように実行されますか、どの順序で
このクエリを実行すると、fieldList に記載されているフィールドが返されることを理解しています。私が理解していないのは、指定されたクエリフィールドで「samplestring1」と「samplestring2」がどのように検索されるかです
これをSQLで説明できれば、検索がどのように行われるかを理解できると思います(舞台裏で何が起こっているかを理解するためだけに)
以下はクエリです。それを見て、これが内部でどのように機能するか教えてください。query=samplestring1 AND samplestring2 defType: edismax queryFields: Exact_Field1^1.0 Exact_Field2^0.9 Field1^0.8 Field2^0.7 fieldList: Column1, Column2 resultRows: 10 startRow: 0
PS samplestring1 AND samplestring2 は、クエリ内のいくつかのテスト文字列です
フィールドのスキーマのサンプル
java - SOLR のフレーズフィールドでユニグラムを使用する
私は solr を使用してドキュメントを検索し、1 つのフィールドで一致させてから、他のフィールドに表示されるキーワードに基づいてブーストしたいと考えています。
元。
だから私が検索すると
そして私は結果を持っています
クエリは、キーワード 1 とキーワード 2 からではなく、説明からブーストされます。これは、pf が "foo" "bar" ではなく "foo bar" (フレーズ slop) をキーワード 1 で検索するためだとわかっています。個々の単語に基づいてブーストしたいと思います。これはプラグインなしで可能ですか?
私が考えたこと:
pf2 や pf3 などのオプションは認識していますが、基本的に探しているのは pf1 です。一言で盛り上がれるようになりたいです。
キーワード 1 とキーワード 2 を qf に追加しない理由は、それらを一致させたくないからです。キーワード 2 には、ドキュメントとは関係のない用語がいくつか含まれています。
クエリ時にクエリを分割して bq を使用できます
しかし、異なるフィールドに異なる重みを割り当てたいのですが、クエリを作成するのは面倒です。
要約すると、pf1 のようなパラメーターが必要です。
solr - Solrの最小一致(mm)とフレーズフィールド(pf)の一致
リクエスト ハンドラで構成されている最小一致は 2 です。検索クエリには、q=termOne termTwo&defType=edismax という 2 つの用語が含まれています。
これは、ドキュメント内で termOne と termTwo の両方が一致すると見なされる必要があることを意味します。また、リクエスト ハンドラーで特定のフィールドを qf (クエリ フィールド) および pf (フレーズ フィールド) として指定しています。
ここで、文書は qf で定義されたフィールドの 1 つで termOne に一致し、"termOne termTwo" という語句は pf で定義されたフィールドの 1 つに一致します。これらの一致を取得しても、mm 基準を満たさないため、ドキュメントは結果に含まれません。
pf の一致も mm に寄与し、ドキュメントが結果に表示されるようにする方法はありますか?
ありがとう。
search - Solr 条件付きクエリ フィールド (qf)
特定の条件に基づいてSolrでクエリフィールドを定義することは可能ですか? たとえば、テキスト、タイトル、製品の 3 つのフィールドがあります。solr 構成定義:
ここで探しているのは、特定の条件が満たされた場合にのみ、検索可能なフィールドとして「製品」を含めることです。たとえば、作成者が「Tom」の場合は、製品も検索します。
edismax を使用してクエリ時にそれを行う方法はありますか?
別の方法として、インデックス時に製品情報をドキュメントのテキストまたはタイトル (著者=Tom) に追加して、検索できるようにすることもできます。しかし、私は可能であればこれを避けようとしています。
任意のポインタをいただければ幸いです。
-ありがとう