我想了解 lucene 搜索如何运行得如此之快。我在网上找不到任何有用的文档。如果您有任何内容(除了 lucene 源代码)需要阅读,请告诉我。
在我的例子中,使用带索引的 mysql5 文本搜索进行文本搜索查询大约需要 18 分钟。 lucene 搜索相同的查询只需不到一秒。
最佳答案
Lucene 是倒排全文索引。这意味着它会获取所有文档,将它们拆分为单词,然后为每个单词构建一个索引。由于索引是精确的无序字符串匹配,因此速度非常快。假设,varchar
字段上的 SQL 无序索引可能同样快,事实上,我认为您会发现在这种情况下大型数据库可以非常快速地执行简单的字符串相等查询。
Lucene 不必针对事务处理进行优化。添加文档时,不需要确保查询立即看到它。而且它不需要针对现有文档的更新进行优化。
但是,归根结底,如果您真的想知道,则需要阅读源代码。毕竟,您引用的两个东西都是开源的。
关于lucene - Lucene 是如何工作的,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2705670/