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
我想从我的数据库数据创建一个索引。 目前我使用 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