【问题标题】:Do I need the original files used to create an index in Lucene?我需要用于在 Lucene 中创建索引的原始文件吗?
【发布时间】:2014-11-27 03:29:20
【问题描述】:

首先,正如我在个人资料中所解释的,我不是英语母语,所以如果我犯了一些语法错误,希望你能原谅我。

我正在尝试使用 Java 中的 Apache Lucene API 进行开发。我能够编写一些索引和搜索方法,但我仍然对它在幕后的工作方式感到困惑。

据我所知,Lucene 并不关心数据的来源。它只是获取数据并为其编制索引。让我用一个简单的例子来问:

我想从基于 .txt 的字典中索引单词。一旦 Lucene 建立了它的索引,我还需要源 .txt 字典吗?索引究竟是如何工作的?

索引是否包含执行搜索所需的内容没有原始来源?或者索引是否仅包含原始源 .txt 字典文件中单词存储位置的方向?我有点困惑。

【问题讨论】:

    标签: java dictionary lucene


    【解决方案1】:

    一旦您为所有内容编制了索引,Lucene 就不会再引用或进一步需要任何源文档。它需要操作的所有东西都保存在它的索引目录中。许多人使用 Lucene 来索引文件、其他数据库记录、其他在线资源。无论您的来源是什么,您始终必须自己(或使用某些第三方工具)引入数据,并为 lucene 构建 Documents 以进行索引,并且文档中没有任何内容说明它的来源。因此,lucene 不仅不需要 参考原始数据源,而且如果您愿意,它也无法找到它们。

    许多人的实现确实依赖于原始来源的存在。人们将 Lucene 设置为对所有内容进行索引并不罕见,而只是存储一个文件名、或数据库 ID 或指向原始源的一些类似指针。这允许他们通过 lucene 执行有效的全文搜索,同时将完整内容存储到其他系统。

    【讨论】:

    • 非常感谢。你的解释现在澄清了我的观点。
    • 澄清一下,当你设置Field.Store.YES时,Lucene可以存储源数据,这是使用Lucene时常见的事情,例如用于在浏览器中呈现搜索结果
    猜你喜欢
    • 1970-01-01
    • 2021-03-05
    • 2011-02-12
    • 2011-05-06
    • 1970-01-01
    • 1970-01-01
    • 2014-07-27
    • 1970-01-01
    相关资源
    最近更新 更多