2012-06-15 38 views
0

我正致力于使用Solr制作可搜索的书籍目录。我写了一个查询,获取我感兴趣的使用DataImportHandler的所有信息。每本书可以有多种格式,并且每种格式都有自己的ISBN,格式名称和价格,这被表示为逗号分隔值,如下所示:Solr数据导入:连接几个逗号分隔的字段

| 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):价格1”

字段2:“FMT2 (isbn2):price2“

Solr是否可以这样做?我总是可以在应用程序端取出字段并处理它们,但由于此Solr索引将有多个客户端执行查询,所以我宁愿在构建索引时存储额外的值。

回答

1

这一切都在DIH wiki解释,只需使用groupNames param来指定字段名称(组是常规的regex groups)。

EDIT:

组名以逗号分隔的字段列名的列表,用于其中 正则表达式中包含组,并且每个组是要保存到不同 字段。如果某些组别没有提及,请留下 逗号之间的空格。

在此示例中,属性'regex'和'sourceColName'是变量使用的自定义 属性。它从结果集中读取字段'full_name' ,并将其转换为两个新的目标字段 'firstName'和'lastName'。因此,即使查询在结果集中只返回一个 列的'full_name',solr文档也会获得两个额外的 字段'firstName'和'lastName',它们是'derived'字段。这些 新字段仅在正则表达式匹配时才会创建。

+0

那仍​​然只给我一个输出字段。理想情况下,我希望拥有与每个字段中逗号分隔的值(isbns,价格和格式)相同的字段。然后我会在我的schema.xml中的统一值将去的地方有字段命名为“aggregate1”,“aggregate2”和“aggregate3”。 – Andrew

+0

我向我的帖子添加了解释。见编辑。 –

+0

完美。非常感谢你澄清。这正是我一直在寻找的。 – Andrew