【问题标题】:Indexing Zip Files with Apache Solr使用 Apache Solr 索引 Zip 文件
【发布时间】:2018-10-23 07:15:48
【问题描述】:

我正在尝试通过 Apache Solr 索引 zip 文件。 我的 Zip 文件只包含一个 CSV 文件。

我的 CSV 文件如下所示:

"N_NATIONKEY","N_NAME","N_REGIONKEY","N_COMMENT"
0,"ALGERIA                  ",0,"04.07.11"
1,"ARGENTINA                ",1,"04.07.11"
2,"BRAZIL                   ",1,"04.07.11"
…

我已经能够索引压缩文件,结果如下:

post http://localhost:8983/solr/first/update/extract?literal.id=zip2&commit=true&captureAttr=true&uprefix=attr_&fmap.content=attr_content

    "ignored_":["stream_size",
      "461",
      "X-Parsed-By",
      "org.apache.tika.parser.DefaultParser",
      "X-Parsed-By",
      "org.apache.tika.parser.pkg.PackageParser",
      "stream_content_type",
      "text/plain",
      "Content-Type",
      "application/zip"],
    "div":["embedded",
      "NATION.csv",
      "package-entry"],
    "id":"zip2",
    "stream_size":[461],
    "x_parsed_by":["org.apache.tika.parser.DefaultParser",
      "org.apache.tika.parser.pkg.PackageParser"],
    "stream_content_type":["text/plain"],
    "content_type":["application/zip"],
    "attr_content":[" \n \n  \n  \n  \n  \n  \n  \n \n   \n  NATION.csv \n \"N_NATIONKEY\",\"N_NAME\",\"N_REGIONKEY\",\"N_COMMENT\"\r\n0,\"ALGERIA                  \",0,\"04.07.11\"\r\n1,\"ARGENTINA                \",1,\"04.07.11\"\r\n2,\"BRAZIL                   \",1,\"04.07.11\"\r\n3,\"CANADA                   \",1,\"04.07.11\"\r\n4,\"EGYPT                    \",4,\"04.07.11\"\r\n5,\"ETHIOPIA                 \",0,\"04.07.11\"\r\n6,\"FRANCE                   \",3,\"04.07.11\"\r\n7,\"GERMANY                  \",3,\"04.07.11\"\r\n8,\"INDIA                    \",2,\"04.07.11\"\r\n9,\"INDONESIA                \",2,\"1\"\r\n10,\"IRAN                     \",4,\"04.07.11\"\r\n11,\"IRAQ                     \",4,\"04.07.11\"\r\n12,\"JAPAN                    \",2,\"04.07.11\"\r\n13,\"JORDAN                   \",4,\"04.07.11\"\r\n14,\"KENYA                    \",0,\"04.07.11\"\r\n15,\"MOROCCO                  \",0,\"04.07.11\"\r\n16,\"MOZAMBIQUE               \",0,\"1\"\r\n17,\"PERU                     \",1,\"04.07.11\"\r\n18,\"CHINA                    \",2,\"04.07.11\"\r\n19,\"ROMANIA                  \",3,\"1\"\r\n20,\"SAUDI ARABIA             \",4,\"04.07.11\"\r\n21,\"VIETNAM                  \",2,\"1\"\r\n22,\"RUSSIA                   \",3,\"04.07.11\"\r\n23,\"UNITED KINGDOM           \",3,\"04.07.11\"\r\n24,\"UNITED STATES            \",1,\"04.07.11\"\r\n \n\n \n  "],
    "_version_":1615098997961129984}]

我想要的是这个:

    "N_NATIONKEY":0,
    "N_NAME":"ALGERIA                  ",
    "N_REGIONKEY":0,
    "N_COMMENT":"04.07.11",
    "id":"84f3e0f3-8b13-47d8-818f-52504f79d91a",
    "_version_":1615098850670804992

在这里我可以搜索特定的列。

如何索引这样的压缩文件? 文档说 Tika 应该可以,但我真的不明白。

【问题讨论】:

  • 如果您通过 Tika 处理程序,我不确定您是否能够将您的内容索引为实际的 csv 更新,因为 Tika 通常更关心获取原始内容(及其元数据) 从文件中取出,而不是将嵌入的内容结构化为单独的更新。
  • 您认为还有其他方法吗?
  • 在您的应用程序中解压缩并发布到 Solr,然后将其作为常规 CSV 文件直接发布到更新处理程序端点。

标签: solr


【解决方案1】:

在即将推出的 (7.6) Solr 中使用 .gz 文件完成类似的操作,请参阅 SOLR-10981。不过,这不包括 zip。

一般来说,您可能只想解压缩文件并将其直接流式传输到 Solr。 bin/post 命令确实允许从标准输入中获取文件内容,您只需要确保内容类型正确。详情请查看bin/post -h

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-04-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-09-01
    • 2014-12-16
    相关资源
    最近更新 更多