2

这不一定是特定于 dtSearch 的问题(例如,它更像是一个 fts 引擎问题),而是处理一种索引由多个页面组成的文档并获得页面级命中结果的方法。

我用谷歌搜索并搜索并没有发现任何东西,因此我的问题是:

我们有一堆来自 m 本书的扫描 n tiff 页。我们对它们进行 OCR,对它们进行全文索引并执行搜索。

我们希望搜索结果是书籍级别的(例如,搜索结果应该包含一本书),但也希望能够在页面级别获得找到的项目(以便能够有效地执行点击突出显示,例如术语SomeTerm在第 1 页、第 2 页和第 7 页上找到)。

问题来了:

  • 如果我们一次索引页面的文本,并且 BookA 中的 Page1 包含术语Term1,并且同样来自 BookA 的 Page2 包含术语 Term2 则搜索Term1 AND Term2不会产生任何结果,这是正常的
  • 如果我们在一个大文本块中索引所有页面的文本,所有这些都属于同一本书,我们将无法获得找到的术语所属的页面。

dtSearch Desktop 具有这样的 PDF 索引功能:它能够从单个文档中索引所有页面的文本,但也可以通过使用 %%Page%% 符号来判断发生命中的页面。

我们正在使用自定义 DataSource 来为索引器提供数据,但我们无法确定要使用的文档结构来获得所需的结果。

如果您使用任何其他 fts 引擎(例如 Lucene/Sphinx),您将如何解决上述问题(有重复自己的风险):

  1. 您需要索引页面的内容
  2. 页面按逻辑分组到文档中
  3. 您需要通过文档获取结果
  4. 高亮结果必须包含页码

谢谢你的任何建议,乔治

PS:抱歉留言太长了

4

2 回答 2

1

作为一个长期使用 dtsearch 的用户,我想我会通过生成和索引一个分页的 pdf 文件来回归基础,它的每一页对应于你的书的一个 ocr 文本页。

这样,您就完全独立于搜索引擎技术,让它在众所周知的 pdf 格式上做它最擅长的事情。

您的索引不会被无意义的单页文档溢出,在搜索书籍时,这些文档的数量会破坏最佳结果排序。

希望这会有所帮助,并为我的英语蹩脚感到抱歉

于 2012-05-23T09:57:06.097 回答
0

蛮力方法是拥有两种类型的索引文档:

  • 页面级文档,包含页面文本、页码、书名和指示这是页面级文档的标志。
  • 书本级文档,其中包含书本、书名和表明这是书本级文档的标志。

您将首先仅搜索书籍级别的文档以查找匹配的书籍。然后,您将仅在页面级文档中搜索匹配的书籍以找到匹配的页面级文档。这会让您说“termX 和 termY 出现在书 Z 中,termX 出现在第 2、47 和 293 页,termY 出现在第 1、3、5 和 293 页。”

这种方法的一个缺点是您最终会为每个页面的内容编制两次索引。

于 2012-05-22T11:50:46.207 回答