我正在努力使书籍目录可以使用Solr进行搜索。我编写了一个查询,用于获取我感兴趣的所有信息,使用 DataImportHandler。每本书可能有多种格式,每种格式都有自己的 ISBN、格式名称和价格,它们以逗号分隔值表示,如下所示:
| id | title | isbns | prices | formats |
|-------------------------------------------------------------|
| 1 | A Book | isbn1,isbn2 | price1,price2 | fmt1,fmt2 |
| 2 | Another | anisbn | aprice | aformat |
... ... ...
我目前正在使用正则表达式转换器和splitBy,以便我可以制作isbn,价格和格式多值字段以进行分面。但是,理想情况下,我希望能够单独提取值并将它们存储在索引的另一个字段中。换句话说,对于示例中 Id 为 1 的书,我想将以下字段存储为字符串:
字段 1:"fmt1 (ISBN1):价格 1"
字段 2:"fmt2 (ISBN2):价格 2"
Solr可以做这种事情吗?我总是可以提取字段并在应用程序端处理它们,但由于此 Solr 索引将有多个客户端执行查询,因此我宁愿在构建索引时存储额外的值。
这一切都在 DIH wiki 中解释,只需使用groupNames
参数来指定字段名称(组是常规正则表达式组)。
EDIT:
groupNames :以逗号分隔的字段列名称列表,用于正则表达式包含组,每个组将保存到不同的田。如果要命名某些组,请在逗号。
在此示例中,属性"regex"和"sourceColName"是自定义的转换器使用的属性。它读取字段"full_name"并将其转换为两个新的目标字段"名字"和"姓氏"。因此,即使查询只返回一个结果集中的"full_name"列 solr 文档额外获得两个字段"名字"和"姓氏"是"派生"字段。这些仅当正则表达式匹配时,才会创建新字段。