lucene - Lucene 是如何工作的

标签 lucene

我想了解 lucene 搜索如何运行得如此之快。我在网上找不到任何有用的文档。如果您有任何内容(除了 lucene 源代码)需要阅读,请告诉我。

在我的例子中,使用带索引的 mysql5 文本搜索进行文本搜索查询大约需要 18 分钟。 lucene 搜索相同的查询只需不到一秒。

最佳答案

Lucene 是倒排全文索引。这意味着它会获取所有文档,将它们拆分为单词,然后为每个单词构建一个索引。由于索引是精确的无序字符串匹配,因此速度非常快。假设,varchar 字段上的 SQL 无序索引可能同样快,事实上,我认为您会发现在这种情况下大型数据库可以非常快速地执行简单的字符串相等查询。

Lucene 不必针对事务处理进行优化。添加文档时,不需要确保查询立即看到它。而且它不需要针对现有文档的更新进行优化。

但是,归根结底,如果您真的想知道,则需要阅读源代码。毕竟,您引用的两个东西都是开源的。

关于lucene - Lucene 是如何工作的,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2705670/

相关文章:

sql - sitecore 将项目统计数据存储在数据库中的什么位置..?

ruby - Elasticsearch:SearchPhaseExecutionException/解析失败

java - 如何存储映射表 - lucene 或 DB?

java - 如何使用 Java 在 XML 中考虑标签名称及其属性来获取值

java - Apache lucene 索引

lucene - 部分词的文档搜索

hadoop - Solr clusterstate.json损坏。可以手动还原吗?

java - 解析 API 函数中有多余的代码吗?

java - 在使用 lucene 进行索引和搜索期间添加有效负载

lucene - 更新 elasticsearch 中的现有文档