代码之家  ›  专栏  ›  技术社区  ›  Vicking

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

  •  0
  • Vicking  · 技术社区  · 7 年前

    创建索引 从我的数据库数据。 目前,我使用SQL视图从数据库中提取数据。 在我的结果中,每个结果都有一个唯一的ID,并且 对于我需要搜索的列之一。

    ID、名称、PRODUCTS\u ID . PRODUCTS\u ID在每个商店可能有几个值。我如何索引到SOLR这样的文档。我必须为每个products\u id创建一个文档(之后我需要以某种方式区分结果),或者我可以使用另一种方式来呈现这个结果吗?我看到有 配置,但有最好的方法吗?

    2 回复  |  直到 7 年前
        1
  •  1
  •   Simon Martinelli    7 年前

    1) 在模式中。您的文件必须是多值的。实例

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

    LISTAGG(AOP_LOCATIONID, ',') WITHIN GROUP (ORDER BY AOP_LOCATIONID) AS SPECIALDELIVERYTIMES
    
        2
  •  0
  •   Vicking    7 年前

    这里是Simas_ch提出的解决方案的实现。

    在里面 数据库数据配置。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\u SERVICE\u ID”

    在中之后 如前所述定义字段:

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

    多值 很重要。

    SQL查询 进行连接:

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