【问题标题】:Can MarkLogic search flat text files? (i.e. txt, tsv, csv)MarkLogic 可以搜索纯文本文件吗? (即 txt、tsv、csv)
【发布时间】:2014-05-24 19:15:30
【问题描述】:

我了解MarkLogic 专为包装在 XML 中的数据而设计。

我加载了一个 txt 文件,其中数据由制表符分隔,我一直在尝试以任何可能的方式对加载 txt 文件的数据库进行单词搜索。

我尝试使用 Query Console 使用 search:search XQuery 函数,但结果只给了我第一次出现的搜索关键字。我认为MarkLogic 认为整个txt 文件包含在1 个XML 标记中。

我希望能够搜索此纯文本文件并获得类似于 Google 搜索结果页面的搜索结果。这可能吗?如何?或者MarkLogic 是否希望所有数据都采用XML 格式?

【问题讨论】:

    标签: marklogic nosql


    【解决方案1】:

    MarkLogic 可以管理 XML、JSON、二进制或文本格式的内容。

    您是如何加载数据的?对于制表符分隔的 .csv 类型文件,我建议使用 Content Pump http://docs.marklogic.com/guide/ingestion/content-pump#id_70366

    加载

    .csv 文件通常是关系表或 Excel 的导出文件。在这种情况下,行成为 MarkLogic 中的单个文档。根据您的描述,听起来文档是完整加载的,而不是分解为单个文档。这很容易在查询控制台中验证,就像您单击“探索”按钮一样,您应该会看到多个 URI。如果您在加载的文档中只看到一个,那么您就知道该文档是作为单个文档完整加载的,这就是为什么您只会得到一个搜索结果。

    是的,您可以使用 MarkLogic 获得 Google 风格的搜索结果。你可能想看看 AppBuilder,因为它会为你快速生成一个带有谷歌风格结果的搜索应用程序,它提供了一个谷歌风格的搜索语法。如果您想自己动手,请查看 REST API 中的 sn-ping。

    http://docs.marklogic.com/guide/app-builder/intro#chapter

    http://docs.marklogic.com/guide/rest-dev/search#id_83997

    【讨论】:

    • 谢谢@wpaven。您是对的,文档已完整加载。我正在尝试根据您的建议使用 mlcp,但遇到了这个问题:第 2 行与列定义不一致
    • 列定义是什么意思?我的 txt 文件的第一行有列名,其余的是数据。我需要为 txt 文件创建架构吗?如果有怎么办?此外,在加载文件时,WARN mapreduce.ContentWriter: XDMP-DOCXMLCHAR: Invalid XML character codepoint 19 at ... 我认为 MarkLogic 不理解文件中的某些字符。我该如何清理/解决这个问题?该文件是 Outlook 收件箱导出文件。
    • 对于 csv 文件,Content Pump 假定第一行是列的名称,以便在后面的行中找到值。假设所有行都具有相同数量的列/字段。您描述的第一个错误通常发生在一行的字段数不等于文件第一行中的字段数时。 (第一行列名成为后续行字段的 XML 元素名称。如果下一行中有更多值,那么列/字段名称是什么?)
    • 对于编码问题,您可能需要查看文档中的 -content_encoding for Content Pump。如果未指定编码,MarkLogic 默认为 UTF-8。 docs.marklogic.com/guide/ingestion/encoding#id_86388 但是您看到的是警告,而不是错误。文档是否加载?您可能只是在处理需要在导入到 MarkLogic 之前/之后清理的脏数据。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-04-13
    • 1970-01-01
    • 1970-01-01
    • 2022-11-28
    • 2012-01-25
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多