0

Solr を使用して書籍カタログを検索可能にする作業を行っています。DataImportHandler を使用して、関心のあるすべての情報を取得するクエリを作成しました。すべての本には複数の形式があり、各形式には独自の ISBN、形式名、および価格があり、次のようにコンマ区切り値で表されます。

|  id  |   title   |    isbns     |    prices     |  formats  |
|-------------------------------------------------------------|
|  1   |  A Book   | isbn1,isbn2  | price1,price2 | fmt1,fmt2 |
|  2   |  Another  |    anisbn    |     aprice    |  aformat  |
 ... ... ...

現在、RegexTransformer と splitBy を使用して、ファセット用に isbns、価格、およびフォーマットの multiValued フィールドを作成できるようにしています。ただし、理想的には、値を個別に引き出して、インデックスの別のフィールドに保存できるようにしたいと考えています。つまり、例の Id 1 の本の場合、次のフィールドを文字列として保存したいと考えています。

フィールド 1: "fmt1 (isbn1): price1"

フィールド 2: "fmt2 (isbn2): price2"

この種のことはSolrで可能ですか? フィールドを引き出してアプリケーション側で処理することはいつでもできますが、この Solr インデックスでは複数のクライアントがクエリを実行するため、インデックスを作成するときに余分な値を保存することをお勧めします。

4

1 に答える 1

1

DIH wikiですべて説明されています。単にgroupNamesparam を使用してフィールド名を指定します (グループは通常の正規表現グループです)。

EDIT:

groupNames :フィールド列名のコンマ区切りリスト。正規表現にグループが含まれ、各グループが別のフィールドに保存される場合に使用されます。一部のグループに名前を付けない場合は、コンマの間にスペースを残してください。

この例では、属性「regex」と「sourceColName」は、トランスフォーマーによって使用されるカスタム属性です。結果セットからフィールド 'full_name' を読み取り、それを 2 つの新しいターゲット フィールド 'firstName' と 'lastName' に変換します。そのため、クエリが結果セットで 1 つの列「full_name」のみを返したとしても、solr ドキュメントは「派生」フィールドである 2 つの追加フィールド「firstName」と「lastName」を取得します。これらの新しいフィールドは、正規表現が一致する場合にのみ作成されます。

于 2012-06-15T20:07:49.697 に答える