我正致力于使用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索引将有多个客户端执行查询,我宁愿在构建索引时存储额外的值。
答案 0 :(得分:1)
所有这些都在DIH wiki中进行了解释,只需使用groupNames
参数指定字段名称(组是常规regex groups)。
<强> EDIT:
强>
groupNames :以逗号分隔的字段列名列表,用于 正则表达式包含组,每个组将保存到不同的组 领域。如果某些组不被命名,则在它们之间留一个空格 逗号。
在此示例中,属性“regex”和“sourceColName”是自定义的 变压器使用的属性。它读取字段'full_name' 从结果集中将其转换为两个新的目标字段 'firstName'和'lastName'。即使查询只返回一个 结果集中的列'full_name',solr文档得到两个额外的 字段'firstName'和'lastName'是'派生'字段。这些 只有在正则表达式匹配时才会创建新字段。