問題タブ [dismax]
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 - カスタム検索クエリ:edismax(user_entered_search_keywords)AND(条件A OR条件B)
私のedismaxは完璧に動作しており、検索キーワードをdismaxに渡すだけで、クエリの形成を内部的に処理します。
私の実装の次のステップは、dismaxがそれらの検索キーワードに対してすべての巨大なジャンボを実行するようにするカスタムクエリですが、カスタム条件を使用してdismaxクエリを実行します。
dismaxを使用していなかったときは、(keyword1またはKeyword2)AND Contidion Aなどの独自のクエリを手動で作成するために使用しましたが、その場合、検索キーワードクエリのすべてのPnCを手動で作成する必要がありました。今dismaxはそれをしますが、ユーザーが入力した検索キーワードに依存しないカスタム条件と一緒にdismaxを使用する方法がわかりません。
(e)dismaxを使用することは可能ですか?はい、それではどのようにですか?
solr - Solr 最小一致: ArrayIndexOutOfBoundsException
text_en
2 つのフィールドを検索する次のリクエスト ハンドラがありTitle
ますBody
。クエリは、最小一致設定なしで機能します。mm フィールドを使用し、検索文字列が 2 語以上の場合、次のようになります。
私のリクエストハンドラ:
問題:何が原因で、どのように解決できるか。
sorting - 空の値に対するsolr dismaxの下限ブースト
次のようなSOLRドキュメントがあります。
ドキュメントを名前で照合するクエリを作成したいのですが、レコードを でブーストしemailaddress
て一番上に表示し、なしemailaddress
で一番下に表示します。
メールアドレスで並び替えたくない 私は dismax を使用することを好みます (ここでは単純化された問題を提示しています)。
solr - Solr dismax クエリの場合、各フィールドのスコアを取得するにはどうすればよいですか?
私のアプリケーションでは、各ドキュメントは、タイトル、キーワード、要約、テキストの 4 つのテキスト フィールドで構成されています。「fq=title キーワードの要約テキスト」で dismax クエリを使用して、Solr に 4 つのフィールドで dismax クエリを実行させることができることを私は知っています。4 つのフィールドの最大関連性スコアが最終スコアとして使用されます。さらに、スコアを fl パラメーターに追加すると、クエリに対する各ドキュメントの関連性スコアを取得できます。
しかし、問題は、4 つのフィールドのそれぞれの関連性スコアをどのように知るかということです。フィールドの重みを調整するためにこれらのスコアをダンプする必要があるため、これは私にとって非常に重要です。私が考えている唯一の方法は、debugQuery オプションを開き、返された XML を抽出してスコアを解析することです。でも複雑すぎると思います。誰でも私の問題を簡単に解決できますか?
solr - Solr 1 と Solr 4 Dismax Handler のスコアの違い
この方法を使用して、Solr 1.4 インデックスを Solr 4.0 に移行しました。また、solrconfig.xml と schema.xml を可能な限り変更せずに、機能を維持しました。
DisjunctionMaxQuery ( dismax
/ solr.DisMaxRequestHandler
) requestHandler を使用して、Solr 1.4 と Solr 4 の間で検索結果を比較しています。URL で?debugQuery=onを使用すると、Solr バージョン間で部分が実質的に同じであることがわかりますがparsedQuery
、生成されたスコアは違う。(そのexplain
部分は異なりますが、計算が長くて鈍いです。)
クエリの例: q=foo
応答の例:
Solr 1.4:
ソル 4.0:
同じリクエスト ハンドラーと同じインデックスを使用しているにもかかわらず、このスコアの大きな違いの原因は何でしょうか?
solr - 同等のSolrDisMaxクエリ
SOLR 3.5.0でelevateハンドラーを設定しようとしていますが、一致タイプに基づいて同じフィールドに異なるブースト値を定義するdismax形式の以下のクエリに相当するものが必要です(完全一致は200を取得し、ワイルドカード一致は100を取得します) 。
q = name:(foo *^100.0またはfoo^200.0)
solr - Solr:フレーズクエリを使用して「at the moon nasa」と「at the moon」を一致させる最良の方法は?
私は約 500.000 のドキュメントのインデックスを持っています。これらのドキュメントの約 10 には、タイトル「at the moon」(「タイトル」フィールド) とタグ「nasa」(「タグ」フィールド) が含まれています。「at the moon nasa」で検索すると、これらのドキュメントが検索結果のリストのかなり下の方に出てきます。これは、タイトル フィールドはブーストされませんが、タグ フィールドはかなりブーストされるためです。そのため、「nasa」というタグが付いた他のドキュメントは、タイトル フィールドのクエリ全体にほぼ一致するドキュメントよりも優先されます。
ただし、Solr にはわかりませんが、「at the moon nasa」というクエリは、ドキュメントのタイトル「at the moon」とほぼ一致します。クエリから「nasa」の部分を削除すると、ドキュメントが一番上に表示されます。
Solr にある種のおおよそのフレーズ クエリを実行するように指示する方法はありますか? 次のような単語の組み合わせで検索フレーズを分割する bq パラメータを使用して、ある種のグラム風の検索を実装することは理にかなっていますか?
これはまったく理にかなっていますか?また、一致するクエリの部分の大きさに応じてドキュメントをブーストすることは理にかなっていますか?
solr - Solr 4.1 dismax pf が期待される結果を返さない
私は solr4.1 と qt=dismax を使用しています。solr1.4 にも同様のセットがあります。
pf フィールドを使用して solr 4.1 をクエリすると、返された結果には、一致するフレーズが上部にあるドキュメントが含まれていません。solr 1.4 の以前のインストールでは、正しい結果が得られました。つまり、フレーズを含むドキュメントは、フレーズを含まないドキュメントよりも高くランク付けされました。
solrconfig.xml には、次の構成があります。
私のクエリは次のようになります。
qt=dismax&q=product%20manager&qf=summ_svc_descr+skills+past_proj_tag+past_proj_name+past_proj_descr+login_name+business_name+primary_state+primary_country+primary_city+tagline+dtl_svc_descr+keywords+about_us+parent_cat_name+experience+credentials+past_cat_company_name+flin_company_name+groups dtl_svc_descr+uniq_id,login_name,login_userid,parent_cat_name,parent_cat_id,net_score,business_name,business_name_sort,primary_state,primary_country,primary_city,primary_zip,reviews_positive_12mos,reviews_12mos,feedback_avg_12mos,earnings_12mos,reviews_positive_6mos,reviews_6mos,feedback_avg_6mos,earnings_6mos,earnings_overall,tagline,summ_svc_descr,hourly_rate, is_individual,user_id,score,tier_seller_id,file_upload_id,file_upload_name,new_provider,is_team,team_cnt,skill_ids,skills,portfolio_yn,jobs_accepted_12mos,is_agent,company_userid,company_login_name,company_business_name,available_y**&pf=summ_svc_descr^1.2+skills^1.8+past_proj_tag+past_proj_name+past_proj_descr+経験+credentials+tagline^1.8+dtl_svc_descr^1.2+keywords+about_us^1.2**&rows=25&start=0&wt=0&wt=0 json
デバッグ出力を確認したところ、parsedquery がフレーズも評価していることがわかります。
管理 | 経験:管理 | dtl_svc_descr:manag | primary_state:マネージャー | primary_country:マネージャー | primary_city:マネージャー | グループ:管理 | tagline:manag)~1.0)~2) (skills:"製品管理"~1^1.8 | about_us:"製品管理"~1^1.2 | キーワード:"製品管理"~1 | past_proj_name:"製品管理"~1 | past_proj_descr:"製品管理"~1 | summ_svc_descr:"製品管理"~1^1.2 | past_proj_tag:"製品管理"~1 | 経験:"製品管理"~1 | 資格情報:"製品管理"~1 | dtl_svc_descr: "製品管理"~1^1.2 | キャッチフレーズ:"製品管理"~1^1.8)~1.0" 8 | about_us:"製品管理"~1^1.2 | キーワード:「製品管理」~1 | past_proj_name:"製品管理"~1 | past_proj_descr:"製品管理"~1 | summ_svc_descr:"製品管理"~1^1.2 | past_proj_tag:"製品管理"~1 | 経験:「プロダクトマネージャー」~1 | 資格情報:「製品管理」~1 | dtl_svc_descr:"製品管理"~1^1.2 | キャッチフレーズ:"製品管理"~1^1.8)~1.0" 8 | about_us:"製品管理"~1^1.2 | キーワード:「製品管理」~1 | past_proj_name:"製品管理"~1 | past_proj_descr:"製品管理"~1 | summ_svc_descr:"製品管理"~1^1.2 | past_proj_tag:"製品管理"~1 | 経験:「プロダクトマネージャー」~1 | 資格情報:「製品管理」~1 | dtl_svc_descr:"製品管理"~1^1.2 | キャッチフレーズ:"製品管理"~1^1.8)~1.0" 2 | キャッチフレーズ:"製品管理"~1^1.8)~1.0" 2 | キャッチフレーズ:"製品管理"~1^1.8)~1.0"
solr - dismax と edismax は異なる結果を返します
私は自分のウェブサイトに Solr を使用しています。ドキュメントには、ジャンルとトピックの 2 つのフィールドがあります。たとえば、愛についての小説を検索したい場合、solr クエリは tyepDef=dismax&qf=genre,topic&q=genre:novel AND topic:about love になります。ただし、これは結果を返しません。ただし、edismax を使用すると、トピックが「about」で始まるすべてのドキュメントが返されます。これらは 2 つの異なる極端であり、何もないか、すべてです。ジャンル:小説とトピック:愛についての両方を満たすドキュメントが返されるように、クエリをどのように構成できますか?