Solr数据导入:连接几个以逗号分隔的字段

时间:2012-06-15 19:24:57

标签: solr dataimporthandler

我正致力于使用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,价格和格式多值字段。但是,我希望能够单独提取值并将它们存储在索引中的另一个字段中。换句话说,对于示例中带有Id 1的书,我想将以下字段存储为字符串:

字段1:“fmt1(isbn1):price1”

第2栏:“fmt2(isbn2):price2”

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

1 个答案:

答案 0 :(得分:1)

所有这些都在DIH wiki中进行了解释,只需使用groupNames参数指定字段名称(组是常规regex groups)。

<强> EDIT:

  

groupNames 以逗号分隔的字段列名列表,用于   正则表达式包含组,每个组将保存到不同的组   领域。如果某些组不被命名,则在它们之间留一个空格   逗号。

     

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