SOLR 如何为每个字段具有多个可能值的字段定义数据导入处理程序?

SOLR how to define the data import handler for fields having several possible values per field?

我想从我的数据库数据创建一个索引。 目前我使用 SQL 视图从基础中提取数据。 在我的结果中,每个结果都有一个唯一的 ID,每个结果可以包含多个可能的另一个 ID,用于我需要搜索的列之一。

例如,在一家商店中,我有 3 列:ID、名称、PRODUCTS_ID。 PRODUCTS_ID 每个商店可能有多个值。我如何才能索引到 SOLR 这样的文件中。我必须为每个 products_id 创建一个文档(然后我需要以某种方式区分结果)还是我可以使用另一种方式来呈现这个结果?我看到有 multiValued 配置,但是有最好的方法吗?

1) 在 schema.xml 中,您的字段必须是多值的。例子

<field name="specialDeliveryTimes" type="int" stored="true" indexed="true" multiValued="true"/>

2) 在 SQL 语句中必须将值与 连接起来,使用 Oracle 的示例:

LISTAGG(AOP_LOCATIONID, ',') WITHIN GROUP (ORDER BY AOP_LOCATIONID) AS SPECIALDELIVERYTIMES

此处执行Simas_ch.

提出的方案

db-data-config.xml中定义:

<dataConfig>
   <dataSource name="jdbc" driver="***" 
      url="jdbc:****" 
      user="***" password="***"/>
   <document>
    <entity name="operation" transformer="RegexTransformer"
        pk="ID"
        query="SELECT * FROM GRC.V_SOLR_REGISTRAR_FR_CATALOG@GRCLINK" 
    >
       <field column="fieldDB" splitBy="," sourceColName="fieldSolr"/>

输入 transformer="RegexTransformer"splitBy="," sourceColName="TOP_SERVICE_ID" 很重要.

schema.xml 之后定义字段 :

<field name="fieldSolr" type="int" indexed="true" stored="true" multiValued="true"/>

其中 multiValued 很重要。

并在 SQL 查询中 进行连接:

LISTAGG(test, ',') WITHIN GROUP (ORDER BY test) AS fieldDB