【问题标题】:Solr - Load and Index custom delimited fileSolr - 加载和索引自定义分隔文件
【发布时间】:2017-03-25 02:08:40
【问题描述】:

我得到以下格式的提要文件数据,由自定义分隔符分隔

employee_id||034100151730105|L|
employee_cd||03410015|L|
dept_id||1730105|L|
dept_name||abc|L|
employee_firstname||pqr|L|
employee_lastname||ppp|L|
|R||L|
employee_id||034100151730108|L|
employee_cd||03410032|L|
dept_id||4230105|L|
dept_name||fdfd|L|
employee_firstname||sasas|L|
employee_lastname||dfdf|L|
|R||L|
.....

所以我的行分隔符是 |R||L| 每个记录分隔符是|L|和 记录名称 (employee_id) 和记录值 (034100151730105) 用 || 分隔

我需要通过以下方式使用 /update 将此数据加载并索引到 SOLR

employee_id: 034100151730105
employee_cd: 03410015 
...

有人可以帮我吗,我如何解析这个提要并将其加载到 SOLR?

【问题讨论】:

    标签: solr delimiter solr6


    【解决方案1】:

    照原样,Solr 将无法摄取此内容。最简单的事情是:

    1. 使用一些命令行工具(如 grep/sed 等)将此格式转换为 Solr 的 /update 可以理解的正确 csv。您需要: 替换 |L|和 ||用分隔符替换 |R||L|换行,并注意转义您使用的分隔符等。
    2. 然后将 /update 与常用参数“分隔符”等一起使用。
    3. 忽略所有带有“skip”的字段名称

    或者,您可以编写一段非常简单的代码,将每个文档读入内存,并通过 Solrj 或 http 在 solr 中对其进行索引。

    【讨论】:

    • 感谢您的回复。我已替换 |L|如 |, |R||L|作为新行和 |作为 = 。当我尝试更新时,它将“employee_id=034100151730105”视为 1 个实体,而不是将“employee_id”作为字段名称,将“034100151730105”作为值。有什么办法可以提到字段级分隔符并说“fieldname=fieldvalue”
    • 我已经更新了我的答案,您也必须将employee_id等字段作为普通字段处理,索引时忽略它们
    • 我需要依靠每条记录来找到它的字段名称,例如字段名称是“employee_id”,值是“034100151730105”。原因是很少的记录可能没有很少的字段,因此在加载数据时必须动态分配字段名称,而不是在 /update 中指定。如果我将它们作为普通字段加载并在索引时跳过,则结果数据将只是 034100151730105= 034100151730105、03410015=03410015 等。请告诉我是否有任何方法可以在解析数据时动态分配字段名?
    • 那么,写一些代码,会更容易
    猜你喜欢
    • 1970-01-01
    • 2017-04-15
    • 1970-01-01
    • 2018-08-18
    • 1970-01-01
    • 2016-01-08
    • 2011-11-28
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多