我在Windows上使用Solr 8.0.0。我已经能够在pdf和csv文件上成功运行它。但是,我无法在结构良好的自定义xml文件上运行。
根据指南,xml文件需要遵循以下结构,以便solr可以正确索引文档(标识正确的字段)以进行搜索-
<add>
<doc>
<field name = "id">001</field>
<field name = "name">Jon Doe</field>
</doc>
...
</add>
但是我需要索引的xml文件具有以下定义良好的结构(数千行)-
<tags>
<row Id="1" TagName=".net" Count="280415" ExcerptPostId="3624959" WikiPostId="3607476" />
<row Id="2" TagName="html" Count="806983" ExcerptPostId="3673183" WikiPostId="3673182" />
...
</tags>
当我发布此xml并进行查询时,我什么都没有得到。但是,上传虚拟xml的结构遵循指南的结构会自动进行。
我认为我可能必须手动编写managed-schema
文件,但是我找不到有关如何执行此操作的任何指南/教程。
任何帮助或资源将不胜感激。
答案 0 :(得分:1)
我同意赫克托·科雷亚(Hector Correa)的观点,如果您不能更改xml文件,则它是使用xslt文件处理此问题的最佳方法。但是请注意,您只能使用xslt版本1! (也许现在您也可以使用v2,但请先进行检查)
这是一个小例子(提示),它看起来如何,我还没有测试!
<?xml version='1.0' encoding='UTF-8'?>
<xsl:stylesheet version='1.0' xmlns:xsl='http://www.w3.org/1999/XSL/Transform'>
<xslt:template match='/'>
<xsl:for-each select='tags/row'>
<field name="id"><xsl:value-of select="@Id" /></field>
<field name="tagname"><xsl:value-of select="@TagName" /></field>
<field name="count"><xsl:value-of select="@Count" /></field>
<field name="excerptpostid"><xsl:value-of select="@ExcerptPostId" /></field>
<field name="wikipostid"><xsl:value-of select="@WikiPostId" /></field>
</xsl:for-each>>
</xslt:template>
字段名称也来自您的托管模式