2017-04-03 104 views
0

当我在Elastic search/lucene中搜索说car engine(这是第一次任何用户搜索到这个关键字)时,搜索引擎是否首先在索引表中寻找单个词的索引,然后找到相交点。例如: - 说引擎找到汽车的文件,然后搜索引擎说它有5个文件。现在在5个文件中(最少文件数量),它将搜索汽车。它找到了2个文件。多个词的弹性搜索/ lucene索引?

现在搜索引擎会根据上述结果对它进行排名。这是如何在索引表中以高级搜索多个单词?

对于未来对同一关键字的搜索,搜索引擎是否在索引表中为关键字car engine创建新条目?

回答

1

是的,它根据您的查询确实搜索单个词并获取结果的交集或联合。它使用了一种叫做“倒排索引”的东西,并且当被搜索的文档被索引到elasticsearch时。 索引操作与搜索不同。所以,不,它不会为用户搜索建立索引,除非您告诉它(在您的应用程序中)。 elasticsearch的基本功能可以分为两部分:

  1. 索引。您可以通过索引您要搜索的所有文档来创建文档索引。这些文档可以来自您的MySQL商店或Logstash等的任何文档,也可以由用户的搜索查询组成,您的应用程序将其索引到相关弹性index
  2. 正在搜索。您可以使用ElasticSearch查询(DSL),使用一些可能由用户生成或应用程序生成的关键字或混合关键字来搜索索引文档。如果找到结果(根据您的查询),那么elasticsearch将返回相关记录。

我鼓励您阅读本文档以便更好地理解如何搜索文档弹性的: https://www.elastic.co/blog/found-elasticsearch-from-the-bottom-up

+0

感谢Archit伟大的链接。如链接所述'当添加新文档(可能通过更新)时,索引更改首先缓存在内存中。最终,索引文件全部被刷新到磁盘。首先弹性搜索内存中的索引,如果找不到索引保存在DB中? – emilly