gpt4 book ai didi

Solr DataImportHandler - 索引多个相关的 XML 文档

转载 作者:行者123 更新时间:2023-12-01 04:34:27 24 4
gpt4 key购买 nike

假设我有两种 XML 文档类型,A 和 B,如下所示:

答:

<xml>
<a>
<name>First Number</name>
<num>1</num>
</a>
<a>
<name>Second Number</name>
<num>2</num>
</a>
</xml>

乙:

<xml>
<b>
<aKey>1</aKey>
<value>one</value>
</b>
<b>
<aKey>2</aKey>
<value>two</value>
</b>
</xml>

我想像这样索引它:

<doc>
<str name="name">First Name</str>
<int name="num">1</int>
<str name="spoken">one</str>
</doc>
<doc>
<str name="name">Second Name</str>
<int name="num">2</int>
<str name="spoken">two</str>
</doc>

因此,实际上,我正在尝试使用 A 中的值作为 B 中的键。使用 DataImportHandler,我将以下内容用作我的数据配置定义:

<dataConfig>
<dataSource type="FileDataSource" encoding="UTF-8" />
<document>
<entity name="document" transformer="LogTransformer" logLevel="trace"
processor="FileListEntityProcessor" baseDir="/tmp/somedir"
fileName="A.*.xml$" recursive="false" rootEntity="false"
dataSource="null">
<entity name="a"
transformer="RegexTransformer,TemplateTransformer,LogTransformer"
logLevel="trace" processor="XPathEntityProcessor" url="${document.fileAbsolutePath}"
stream="true" rootEntity="true" forEach="/xml/a">
<field column="name" xpath="/xml/a/name" />
<field column="num" xpath="/xml/a/num" />


<entity name="b" transformer="LogTransformer"
processor="XPathEntityProcessor" url="/tmp/somedir/b.xml"
stream="false" forEach="/xml/b" logLevel="trace">
<field column="spoken" xpath="/xml/b/value[../aKey=${a.num}]" />
</entity>

</entity>
</entity>
</document>
</dataConfig>

但是,我遇到了两个问题:

  1. 我无法获得带有谓词的 XPath 表达式来匹配任何行;无论我是否使用 /xml/b[aKey=${a.num}]/value 之类的替代方案,甚至是 aKey 的硬编码值。
  2. 即使我删除了谓词,解析器也会为 A 中的每一行遍历一次 B 文件,这显然效率很低。

我的问题是:鉴于上面列出的问题,我如何使用 DataImportHandler 正确有效地索引数据

我正在使用 Solr 3.6.2。

注意:这有点类似于this question ,但它处理两种 XML 文档类型,而不是 RDBMS 和 XML 文档。

最佳答案

我在使用 DataImportHandler 处理这类数据时有过非常糟糕的经历。一个简单的 python 脚本来合并你的数据可能会比你当前的配置更小并且更易读。根据您的要求和数据大小,您可以创建一个临时 xml 文件,也可以直接将结果通过管道传输到 SOLR。如果你真的必须使用 DataImportHandler,你可以使用 URLDataSource 并设置一个最小的服务器来生成你的 xml。很明显,我是 Python 的粉丝,但它很可能在 Ruby、Perl 中也很容易,...

关于Solr DataImportHandler - 索引多个相关的 XML 文档,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16445928/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com