我有一个包含多个文档的巨大XML文件(如果需要,可以轻松地将每个文档转换为多个文件)。这个巨大的XML的文件大小约为4 GB。我需要对其进行索引,以便更好,更快地搜索用户。我也在使用XSLT来转换这些数据。
以下是我的基本XML结构 -
<Docs>
<Doc>
<Title t=""></Title>
<Desc></Desc>
<Info></Info>
</Doc>
<Doc>
<Title t=""></Title>
<Desc></Desc>
<Info></Info>
</Doc>
</Docs>
如果需要,每个Doc
可以分开。如果用户搜索了特定的单词,我将使用XSLT以HTML格式显示完整的文档。
由于我到目前为止还没有使用过Lucene,所以我有一些疑问 -
答案 0 :(得分:0)
根据我的经验,您可以将XML文件保存在磁盘上。
然后在应用程序启动时,您将处理该文件以创建Lucene索引。
你可以有一个函数来添加/删除索引中的东西,以保存重复处理整个XML文件的“昂贵”任务。
将数据编入索引后,您可以向Lucene提供查询。
返回的结果可能是XML,然后您可以使用XSLT处理View。
-
以上是非常高的水平,'是'你可以回答。
实际上,我做了类似的事情,分析了存储在数据库中的Umbraco内容,然后将其填充到Lucene索引中(添加其他字段以使搜索更容易)。
然后我们编写了一个XSLT扩展,它允许将RAW lucene查询传递给某个C#,然后将结果集作为内存中的XML返回。
<xsl:apply-templates select="$result-set/result" />
<xsl:template match="result">
<article>
<h1><xsl:value-of select="title" /></h1>
</article>
</xsl:template>
本文中有一些很棒的想法。 http://www.ibm.com/developerworks/java/library/j-lucene/
答案 1 :(得分:0)
我想说不要在Lucene索引中保存原始XML。将XML标记和属性的值保存为Lucene文档的字段 您可以将生成的HTML路径(XSLT转换的输出)作为字段中的 Doc 的一部分保存在Lucene中。这是在索引之前/之后完成的。
因此,当您找到文档时,您不必在运行时构建HTML视图。您将只使用正确HTML表示的路径。