0

eコマースアプリケーションでSolrを実装しています。主な目的は、検索の高速化とカタログナビゲーションの改善です。

ただし、問題は、動的ファセットをSolrにマップする方法を理解できないことです。私がダイナミックファセットと言うとき、私はこれを意味します...

サムスンギャラクシーS3

  • カテゴリ:スマートフォン
  • ブランド:Samsung
  • OS:Android
  • RAM:1 GB
  • プロセッサー:1 Ghz
  • カメラ:8MP
  • ディスプレイ:4.7インチ
  • など..

OS、RAM、プロセッサ、カメラなどのフィルタリング基準は、製品ごとに動的であり、ファセットのフィルタ基準のセットがまったく異なるものもあれば、まったく異なるものもあります。したがって、誰かがAndroidをクリックすると、選択したカテゴリのすべてのAndroidフォンで結果がフィルタリングされます。

ファセット検索用にこの種のデータディクショナリをサポートするためにsolrschema.xmlがどのように表示されるかを決定できないという問題に直面しています。

4

2 に答える 2

4

動的フィールドが必要です。

あなたもこれを行うことができます:

product_name : samsung nexus
android_version_t : 4.0
partner_store_price_i : 19800

スキーマをそのように設定すると、サフィックス_tとサフィックスはテキスト型と整数型として理解されます。_i

<dynamicField name="*_i"  type="int"    indexed="true"  stored="true"/>
<dynamicField name="*_s"  type="string"  indexed="true"  stored="true"/>
<dynamicField name="*_l"  type="long"   indexed="true"  stored="true"/>
<dynamicField name="*_t"  type="text"    indexed="true"  stored="true"/>

http://www.tnrglobal.com/blog/2010/07/dynamic-fields-in-apache-solr/

http://wiki.apache.org/solr/SchemaXml#Dynamic_fields

于 2012-06-13T07:07:06.233 に答える
2

上記の答えを拡張します。

isSpecial、boolean、specialCategoryTypeなどのフィールドを持つことができます。上記の場合、それらはtrueおよびandroidに設定されています。

このアイテムが選択されている場合(isSpecial)、クエリを絞り込み、述語specialCategoryType:androidに追加できます。

編集:

AndroidフォンとAndroidラップトップの2つの製品があるとしましょう。電話1-os:android; タイプ:電話; カメラ:8MP; specCatFacet:os、type、camera; specCatRefine:os、タイプlaptop- os:android; タイプ:ラップトップ; 画面サイズ:13; specCatFacet:os、type、screen; specCatRefine:os、タイプphone 2-os:android; タイプ:電話; カメラ:4MP; specCatFacet:os、type、camera; specCatRefine:os、タイプ

人々がアンドロイドを検索すると、3つすべてが表示されます。表示されるファセットは、両方のファセットのセットの和集合である可能性があります。

phone1または2をクリックすると、specCatRefineフィールドが表示され、osを使用して検索条件を絞り込み、specCatFacetを入力して使用し、それらをファセットします。

ラップトップがクリックされると、検索はos、typeで絞り込まれ、os、type、screenでファセット化されます。

基本的に、2番目の検索用語の絞り込みとファセットは、各ドキュメントのフィールドに基づいています。検索用語の絞り込みには、基準の作成方法に関するこのロジックが多数含まれています。

お役に立てれば...

于 2012-06-13T01:21:22.217 に答える