問題タブ [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.
regex - Solr edismax でサポートされている正規表現機能は何ですか?
正規表現では、以下に示すパターン マッチング構文を使用できます。これらをできるだけ多く実装する強力な検索ツールを実装しようとしています。edismax は、この仕事に最も柔軟なツールだと言われています。次のパターン マッチング式のうち、edismax で実行できるものはどれですか? edismaxよりもうまくできますか?この機能を実現するために使用できるフィルターとパーサー パッチを提案してもらえますか? この種の検索で Solr が許容できるパフォーマンス (つまり、サーバー側の処理時間) を達成できると思うかどうか、夢を見ているのでしょうか?
正規表現の構文とmysqlの例
- ^ 文字列の先頭に一致。
'fofo' REGEXP '^fo' => true
- $ 文字列の末尾に一致します。
'fo\no' REGEXP '^fo\no$' => true
- * 0 無制限のワイルドカード。
'Baaaan' REGEXP 'Ba*n' => true
- ? 0 ~ 1 のワイルドカード。
'Baan' REGEXP '^Ba?n => false'
- + 無制限のワイルドカード 1 つ。
'Bn' REGEXP 'Ba+n' => false
- | | また。
'pi' REGEXP 'pi|apa' => true
- ()* シーケンス一致。
'pipi' REGEXP '^(pi)*$' => true
- [a-dX]、[^a-dX] 文字範囲/セット
'aXbc' REGEXP '[a-dXYZ]' => true
- {n} または {m,n} カーディナリティ表記
'abcde' REGEXP 'a[bcd]{3}e' => true
- [:文字クラス:]
'justalnums' REGEXP '[[:alnum:]]+' => true
solr - Solredismaxワイルドカード検索で元の文字列が見つかりません
Solrインデックスに次のコンテンツがあります:
west indian cherry
タイプのファイルtext_en
(フィールドの定義については以下を参照)。
一致して検索するcherr*
と見つかります。また、ドキュメント内の一致する単語を
検索します。
しかし、検索は一致しません。cherri*
cherry*
私はこれを疑っPorterStemFilterFactory
ていますが、理由はわかりません(クエリアナライザーはインデックスアナライザーと同じです)。
サンプルクエリ
solrconfig.xml
フィールド分析
索引
クエリ
solr - パラメータ bq は、グループ化を使用してファセット数を変更します
solr トランクを使用していくつかのドキュメントを検索し、カテゴリ別にグループ化していますが、最初に別のフィールドでグループ化する必要があります。より具体的には、次のスキーマを使用しています。
- component_id: 文字列
- カテゴリ: 文字列
- 名前: テキスト
そして、私は2つのドキュメントを持っています:
- component_id = register1、category = category1、name = 'foo bar'
- component_id = register1、category = category2、name='foo bar Zoo'
私のクエリは(関連するパラメータのみ)です:
{edismax qf=name}(foo bar)&group.field=component_id&group.truncate=true&facet.field=category&bq=category:category1^2
ファセットの結果は次のとおりです。
しかし、たとえば bq パラメータを変更すると、 bq=category:category1^20 のようになります。
ファセットの結果が変更されました。
それは可能ですか?バグですか?group.truncate=false を設定すると、この例ではすべて問題ありませんが、残りのクエリでは失敗します。
ありがとうございます。それでは、お元気で
solr - Edismax で先頭のワイルドカードを使用すると、エスケープされたアスタリスク/クエリ マークがエスケープされない
Edismax パーサーを使用して、Solr テキスト フィールドにアスタリスク/クエリ マークを含むドキュメントを検索しようとしています。通常のテキスト ( ) を検索したり、エスケープ ( ) を使用してfq={!edismax}textfield:*sometext*
その他の特別な Lucene 文字を検索したりすると、すべてが完全に機能しますfq={!edismax}textfield:*\~*
。
*
ただし、 ( fq={!edismax}textfield:*\**
) または?
( )を検索するfq={!edismax}textfield:*\?*
と、すべてのドキュメントが返されるため、これらの文字はエスケープされないようです。エスケープ文字のURL エンコーディングも試してみましたが (\%2A
代わりに のように\*
)、結果は同じです。
とは正しい結果を返しますが、fq={!edismax}textfield:\**
とは返さないため、問題は主要なワイルドカードのみに関係しているように見えます (同様に)。fq={!edismax}textfield:\?*
fq={!edismax}textfield:*\*
fq={!edismax}textfield:*\?
fq={!edismax}textfield:*sometext\*
先行するアスタリスク ワイルドカードを使用して Edismax を検索*
/使用するにはどうすればよいですか??
autocomplete - edismax タイプ エラーに基づく Solr オートコンプリート
edismax タイプに基づいてオートコンプリートを実装しようとすると、次のエラーが表示されます。
スキーマ タイプ:
スキーマ フィールド
solr config では、edismax タイプで次のリクエスト ハンドラーを使用します。
このエラーは、クエリに単語の後に + - $ @ などの特定の記号が含まれている場合にのみ発生しました
львів+в київ+а
どんな提案も素晴らしいでしょう
solr - SolrExtendedDisMaxクエリパーサーを使用したフィールド検索
プレーンでないクエリ内にフィールド化された検索を含むクエリでSolrExtendedDisMaxクエリパーサーを使用する際に問題が発生しました。
ケースは次のとおりです。
パラメータを使用してedismaxリクエスト(defType = edismax)をSOLRに送信すると
- qf = field1 ^ 10
- q = field2:ciao
- debugQuery = on(デバッグ目的)
solrは私が期待するようにクエリを解析します。実際、応答のデバッグ部分は次のように指示します。
しかし、条件を角かっこで囲むように、式を少しだけ複雑にすると、次のようになります。1. qf = field1 ^ 10 2. q =(field2:ciao)
ここで、Solrはフィールド構文を認識していないようです。
私はドキュメントでこの振る舞いについての言及を見つけませんでした、代わりに彼らはそれを言います
このパーサーは、ブール演算子'AND'、'OR'、'NOT'、'+'、および'-'、フィールド検索、用語ブースト、ファジーを含む完全なLuceneQueryParser構文をサポートします。
edismaxパーサーを使用しても、強制ブール値とフィールド化されたクエリを実行したいので、この問題は本当に厄介です。
これを回避する方法を知っていますか?
編集:Solrのバージョンは3.6です
solr - Solr Request Handler はクエリ文字列を変更できますか?
StandardRequestHandler を使用する既存の solr 検索を改善しようとしています。dismax ベースのハンドラーに切り替えたいのですが、"fieldname:value" クエリからフィールド名を削除する必要があります。
q
リクエスト ハンドラに渡されるパラメータ値を変更することはできますか?
solr - SOLR 句クエリ
SOLR 4.0 で検索してフレーズ クエリを実行しようとすると、少し問題が発生します。
「idx_text_general_ci」というフィールドがあります。これは、すべてのフィールドで構成される大文字と小文字を区別しない (すべて小文字の) フィールドです。
フレーズ(マリンフィッター)を検索しようとすると、SOLRはフレーズを2つの単語に分割する代わりにフレーズの検索を拒否します-
debugQuery=true 以下の出力:
上記のように、クエリが 2 つの部分 (idx_text_general_ci:marine と id:fitter) に分割されます。
私が抱えている問題は、idx_text_general_ci フィールドに 2 回出現する「marine fitter」に完全に一致するにもかかわらず、「marine」という単語が 3 回出現するドキュメントよりも低いスコアでランク付けされていることです。私のSOLRが期待どおりにフレーズでフィールドを検索した場合、これは当てはまらないことを私は知っています。
フレーズを引用符で囲むと、結果はゼロになります。
正しい方向への助けやナッジは大歓迎です。
前もって感謝します
アレックス
solr - solr で特定のフォントを使用してページをブーストする
Apache Nutch を使用して Web サイトをクロールし、Apache Solr にインデックスを付けました。クエリ ワードが特定のフォント (h2 html タグなど) に存在するドキュメントをブーストするにはどうすればよいですか? たとえば、私のクエリは本で、本を含むページが 2 つあります。最初のページの本はh1 htmlタグにあり、2番目のページの本はh2 htmlタグにあります。2番目のページが上位の結果になるようにしたい(ブーストが大きい)。ありがとう
solr - ハイフンとキャメルケースを使用したSolr検索で期待される結果が返されない
フィールド値がキャメルケースとハイフンの両方である特定のケースで失敗するsolr検索アプリケーションがあります。これらのケースは個別には正常に機能しますが、solr 内のフィールド分析ページが用語と一致しているにもかかわらず、一致するものはありません。
例えば:
フィールドmyFieldには値camelCase-hyphenが含まれています。camelcase-hyphenのクエリ値(これはキャメルケースではないことに注意してください) では、単語全体を連結する WordDelimiterFilterFactory 設定にもかかわらず一致がなく、LowerCaseFilterFactory が続きます。
分析ページには一致が表示されていますが、実際の検索を実行しても結果が得られません。下記参照。
私のフィールドタイプ分析は
Solr 3.6.1 と edismax を使用しています。
どんな助けでも大歓迎です。
アップデート: