一尘不染

如何索引html内容,保持位置(如xpath,css选择器等)

elasticsearch

我想为HTML内容创建全文搜索索引(更具体地说:XHTML格式的EPUB章节)。像这样:

...
<p>Lorem ipsum <b>dolor</b> sit amet, consectetur adipiscing elit.</p>
...

问题是我需要以某种方式将匹配文本的位置(例如xpath)与搜索结果匹配,因为我需要将阅读器软件放置在正确的位置。我需要像突出显示功能这样的功能,但是要提供匹配项的高亮位置,而不是突出显示的文本。因此,如果我搜索“
dolor”,它会返回如下信息:

matches:[
...
  {"match":"dolor", "xpath":"//*[@id="lipsum"]/p[1]/b"}
...
]

标准场景(我到处都可以找到),例如带过滤器的html字符,然后标记化等,在这里不适用,因为它在第一步中会丢失位置信息。

有什么建议?Solr或ElasticSearch甚至有可能吗?谢谢!


阅读 268

收藏
2020-06-22

共1个答案

一尘不染

您的问题是关于突出显示xhtml-Dokument的结果xpath。

我不知道在solr或elasticsearch中正在运行的解决方案。在Lucene(旧版本)的基础上,可扩展文本框架(“
XTF”)的内容非常相似。在XTF中,您可以在原始xml文件中将高亮显示为标签。因此,编写xsl-Transformation生成相应的xpath应该很容易。

简而言之,主要思想是将EPUB-
book分成重叠的块,并将xml结构作为特殊字符存储在已索引和存储的字段中。通过突出显示信息,您可以然后重新转换原始xml结构以找到您的xpath。

2020-06-22