2012-03-28 23 views
0

現在、solrベースの検索アプリケーションで作業中です。Apache Solr:多値フィールドでのファセット検索

私は2つの多値フィールドを持っています: データはデータベースから読み出されます。

<int name="id">1</int> 
<arr name="type"> 
<str>Marke</str> 
<str>Modell</str> 
<str>Fahrzeugtyp</str> 
<str>engine</str> 
</arr> 
<arr name="value"> 
<str>Volkswagen</str> 
<str>Golf</str> 
<str>Golf TDI</str> 
<str>V-Engine</str> 

現在のsolr設定では、これら2つの多値フィールド間には関係がありません。私が "Marke = Volkswagen"と言うことができるように。

さらに、フォルクスワーゲンとゴルフの間には関係がなければなりません。ですから、2つの多値フィールドと多値フィールド自体の値のうち、分類法を構造化しなければなりません。

私はtypeAheadを構築しようとしました。私の現在の設定では、私はフォルクスワーゲンを検索します - 可能な提案には、フォルクスワーゲンモデルを参照していないaudiとengine2が含まれています。 のSolr URL:

http://xyz:8983/solr/suggest?&wt=json&facet=true&q= * & facet.field =値は& facet.prefix =フォルクスワーゲン

私はSolr Faceting on Multiple Concatenated Fieldsはそれとは何かを持っていると思いますが、私は私の問題でそれを調整することはできません。返信に

おかげ


は、たぶん私は値を組み合わせて入力するTemplateTransformerを使用することができますか?


私は結果を得ました:Marke |私のデータ-import.xml(DIH)

<entity> name="tablename" transformer="TemplateTransformer"> 
<field column="test" template="${tablename.TYPE} | tablename.VALUE}"/> 
... 
</entity> 

+0

書式設定にいくつかの変更を加え、2つの文法上の問題が修正されました。これにより、人々はあなたの質問を理解できなくなる可能性があります。 – aitchnyu

+2

はあなたの質問を本当に理解していません....もっと精巧にしてください。 – Yavar

+0

http://stackoverflow.com/questions/9521304/solr-faceting-on-multiple-concatenated-fieldsがあなたを助けますか? – jpountz

答えて

2

でフォルクスワーゲン

は、私がこの問題を解決してきたので、長い時間となっています。データ入力ハンドラでこのスクリプトを使用してみてください。注意 - このスクリプトはsolr 3.6に基づいています。

<script> 
     <![CDATA[ function f1(row) 
     { 
      var eldName = row.get('TYPE'); 
      row.put(eldName, row.get('VALUE')); 
      return row; 
     } 
     ]]> 
</script> 

<entity name="e" transformer="script:f1" query="select TYPE, VALUE from X"></entity> 
+0

ダイナミックフィールドを追加し、トランスを使用しました。驚くばかり!! – nish

関連する問題