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、价格和格式多值字段。但是,理想情况下,我希望能够单独提取值并将它们存储在索引的另一个字段中。换句话说,对于示例中 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”并将其转换为两个新的目标字段“firstName”和“lastName”。因此,即使查询在结果集中仅返回一列“full_name”,solr 文档也会获得两个额外字段“firstName”和“lastName”,它们是“派生”字段。仅当正则表达式匹配时才会创建这些新字段。

于 2012-06-15T20:07:49.697 回答