0

我已经能够在 iOS 上编译 CLucene 项目,目前正尝试在我的 iOS 应用程序中使用它。我正在尝试索引 xhtml 文档,并且已经能够通过从这些文档中提取文本节点来做到这一点,然后通过将它们连接在一起来在 lucene 中进行索引,以便一个 xhtml 文档中的所有文本出现在一个单一的Lucene 文档。

但是,我的 xhtml 文档的每个文本节点都有自定义属性,因此当对索引文本进行搜索时,我也应该能够获得与该文本关联的属性。

我的 xml 数据如下所示:

<span data-value="/1/2/3">This is a sample text for this span</span>
<span data-value="/2/3/4">This is a example text for another span</span>
<span data-value="/3/4/5">Searching for this span text</span>

因此,当我从 Lucene 索引中搜索单词样本时,我应该能够检索归因于单词 Sample 关联的数据值。在上述情况下,它将是 data-value="/1/2/3"。

我创建索引的方式是将数据值属性和文本节点字段连接在一起,然后由 Lucene 对其进行索引。这样,每当我的搜索结果返回时,它也会返回与之一起属性的数据值。我可以评估属性值,并且在搜索时会从显示结果中完全删除该属性。但是,对于包含在跨度文本中的大文本,情况并非如此,其中可能会返回搜索的单词,但数据值属性可能不是搜索结果的一部分,在显示时可以进一步剥离。

但是,我认为这不是索引 XML 属性及其文本数据的最佳方式。

如果有人可以帮助我使用该方法来索引文本与其属性之间的关系,我将不胜感激。

更新:我发现从文本生成的令牌可以有与之关联的有效负载,所以我在想,如果我们可以将 XML 属性内置为我的整个字符串的有效负载,可以将其视为单个令牌(如果我不分析文本),可能对我的目的有用。我想知道是否有人可以帮助我确定这是否适合我的情况。非常感谢您的帮助。

谢谢和问候, 阿希什

4

1 回答 1

1

如果您想将所有 XHTML 文本保存为一个 Lucene 文档,那么有效负载可能是您要走的路。

另一种方法是创建一个文档 ID 字段(如“documentID:42”和一个表示此 Lucene 文档是连接在一起的整个文档的字段(如“AllOfDocument:42”)。这将允许您单独索引每个文本节点并将属性限制为该节点的属性,同时仍将该文本节点绑定到整个文档。使用这种方法,您可以将属性放在文本节点 Lucene 文档中自己的字段中,而不必使用有效负载。可能更简单.

于 2013-02-08T18:46:10.323 回答