クライアントの Drupal 7 Web サイトの 1 つの背後に Solr を配置しました。これはうまく機能していますが、非常に具体的なクエリに対して返される結果が多すぎます。(関連性/重み付けの問題もありますが、この問題を解決することで、文字通り-無関係な結果が削除されることを願っています。)
たとえば、「ロンドンの特定のフレーズ」というフレーズを検索すると、それをタイトルとして含むノードがかなり上位に返されます。他のコンテンツを返すべきだとさえ思いません。しかし、「ロンドン」に言及しているという事実だけで、多くのコンテンツが返されていることがわかりました!
軽薄なことに、「piecrusts in london」というばかげたフレーズを検索しても、明らかにロンドンに言及しているという理由だけで、多くの結果が返されます。サイトのコンテンツには、実際のパイクラストについて言及されていません.
「ロンドンの特定のフレーズ」を検索すると、サーバーの catalina.out ログに記録されるパラメーターは次のとおりです (明確にするために空白が追加されています)。
{spellcheck=false&facet=true&f.im_field_health_topic.facet.mincount=1
&facet.mincount=1&f.ds_created.facet.date.gap=%2B1YEAR
&spellcheck.q=particular+phrase+in+london
&qf=taxonomy_names^2.0&qf=path_alias^5.0&qf=content^40&qf=label^21.0
&qf=tos_content_extra^1.0&qf=ts_comments^20&qf=tm_vid_3_names^200
&facet.date=ds_created
&f.ds_created.facet.date.start=1970-01-01T00:00:00Z/YEAR
&f.bundle.facet.mincount=1&hl.fl=content,ts_comments
&json.nl=map&wt=json&rows=10&fl=id,entity_id,entity_type,bundle,bundle_name,
label,is_comment_count,ds_created,ds_changed,score,path,url,is_uid,
tos_name,tm_node,zs_entity
&start=0&facet.sort=count&f.bundle.facet.limit=50&q=special+phrase+in+london
&f.ds_created.facet.date.end=2012-01-01T00:00:00Z%2B1YEAR/YEAR
&bf=recip(ms(NOW,ds_created),3.16e-11,1,1)^150.0
&facet.field=im_field_health_topic&facet.field=bundle
&f.im_field_health_topic.facet.limit=50&f.ds_created.facet.limit=50}
hits=1998 status=0 QTime=14
これらのパラメーターは、Drupal の Apache Solr モジュールによって構築されていることに注意してください。独自の特定のカスタム コードで何かを行っているとは思えません。
ブラウザに直接入力した場合、これは次の URL に対応します。
http://example.com:8081/solr/CLIENT/select?spellcheck=false&facet=true&f.im_field_health_topic.facet.mincount=1&facet.mincount=1&f.ds_created.facet.date.gap=%2B1YEAR&spellcheck.q=particular+phrase +in+ロンドン&qf=taxonomy_names^2.0&qf=path_alias^5.0&qf=content^40&qf=label^21.0&qf=tos_content_extra^1.0&qf=ts_comments^20&qf=tm_vid_3_names^200&facet.date=ds_created&f.ds_created.facet.date.start=1970-01-01T00:00 :00Z/YEAR&f.bundle.facet.mincount=1&hl.fl=content,ts_comments&json.nl=map&wt=json&rows=10&fl=id,entity_id,entity_type,bundle,bundle_name,label,is_comment_count,ds_created,ds_changed,score,path,url ,is_uid,tos_name,tm_node,zs_entity&start=0&facet.sort=count&f.bundle.facet.limit=50&q=particular+phrase+in+London&f.ds_created.facet.date.end=2012-01-01T00:00:00Z%2B1YEAR /YEAR&bf=recip(ms(NOW,ds_created),3.16e-11,1,1)^150.0&facet.field=im_field_health_topic&facet.field=bundle&f.im_field_health_topic.facet.limit=50&f.ds_created.facet.limit=50
この URL は約 2000 件の結果を返します。これがサイトのほとんどのコンテンツです。一度に各クエリパラメーターを削除して実験しましたが、違いがあるのはqfとqだけのようです。qfを削除すると、結果はゼロになります。q を削除すると、より多くの結果が得られます。
ここには2つの質問があると思います:
- これらのパラメーターには、「「特定のフレーズ」または「パイクラスト」が表示されても心配しないでください。「ロンドン」の結果を照合してから、関連性で並べ替えるように Solr に指示するものはありますか? 「in」はストップワードファイルに記載されていると思うので、おそらくその影響を無視できると思います(?)
- それとも、これは変更が必要な (標準 Drupal) スキーマの何かですか?
検索が包括的である場合、訪問者にとって検索が優れている場合があることに感謝します。完全一致が見つからない場合でも、Google は結果を返します。ただし、ストップワードとステミングは別として、クライアントは、すべての単語がコンテンツに含まれる結果のみを検索で返す必要があります。