使用Lucene索引XML(DITA)文件并查询属性值

时间:2019-01-07 11:19:59

标签: xml lucene aem dita

我们正在尝试使用Lucene在AEM中实现XML(DITA)文件的复杂索引。现在,全文索引支持搜索。

例如: 在下面的文档中,所有文本均被提取并建立索引,以方便对文档内容进行全文查询。

<concept id="lawnmowerconcept" xml:lang="en-us">
<title>Lawnmower</title>
<conbody product="mower25h">
    <p>The lawnmower is a machine used to cut grass in the yard. Lawnmowers can be electric, gas-powered, or manual.</p>
</conbody>
</concept>

现在,要求是还允许进行专门的XML搜索。例如:

  • 用户可以按元素名称搜索。例如el:conbody-这仅应返回包含<conbody>元素的文档。
  • 用户可以按属性名称进行搜索。例如。 @product =”%” –仅应返回将product属性应用于其至少一个元素的文档。请注意,我们并不关心此属性的值。
  • 用户可以按属性名称/值对进行搜索。例如。 @ product =” mower25h” –仅应返回将product属性应用于值至少为mower25h的元素之一的文档。

实现的最佳方法是什么?

  • 继续使用全文本索引,但使用自定义的Lucene Analyzer保留XML标记。例如。 <title>Lawnmower</title>将分解为<title>, Lawnmower, </title>,而不会除去特殊字符。

  • 使用自定义分析器创建一个新的全文本索引,该分析器将剥离所有文本内容,并且仅索引元素,属性名称和属性值。两个索引可以交集吗? 例如像el:p =%lawnmower%这样的查询将返回上面的文档,因为它有一个带有割草机文本的<p>元素。

  • 还是我应该完全避免使用AEM Lucene,而最好选择像Solr这样的外部索引?

0 个答案:

没有答案