2017-04-03 80 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