簡體   English   中英

與 Elasticsearch 等數據庫相比,mongoDB 和 Postgres 等數據庫的搜索引擎表現如何? (2020 年)

[英]How well do the search engines of databases like mongoDB and Postgres do compared to something like Elasticsearch? (in 2020)

我正在一個網站上工作,用戶可以在其中創建數據庫條目。 這些條目都是相同的形式,所以到目前為止我使用的是 Sqlite(帶有 FTS5),這是我知道的唯一數據庫;)

但是,用戶可以在網站上搜索這些條目至關重要。 全文搜索運行良好(用戶大致知道他們在尋找什么),但我需要兩個改進:

  1. 錯誤的拼寫應該返回正確的條目(我已經看到了 sqlite 的拼寫擴展,但我不知道它的效果如何)
  2. 更重要的是,如果用戶在網站上輸入一些查詢詞,我會嘗試使用 sql 查詢匹配那些查詢詞。 如果用戶輸入的單詞太多,它將返回 0 個匹配項:

例如:如果用戶在搜索欄中輸入“sars covid 19”:

CREATE VIRTUAL TABLE TEST USING FTS5(SomeText);

INSERT INTO TEST(SomeText) VALUES 
('Covid 19');

SELECT SomeText 
FROM TEST 
WHERE SomeText MATCH 'sars covid 19';

=> 0 個匹配項,但我希望它返回“covid 19”條目。

我意識到 sqlite 對於需要很好地處理搜索的數據庫來說可能過於簡單。 現在我的問題是:Postgres 或 MongoDB 是否有包含我需要的功能的搜索引擎? 或者是否值得深入研究 Elastic Search 等解決方案?

我發現的大多數文章都是 5-10 年前的,所以我想知道當前的 state 是關於數據庫中的搜索引擎的。 非常感謝任何提示

Elasticsearch 肯定會工作。 您只需要考慮如何索引您的文檔,並且您將能夠以索引它們的方式找到它們,在您的上下文中,默認文本似乎適用於匹配查詢:

https://www.elastic.co/guide/en/elasticsearch/reference/current/full-text-queries.html

MongoDb 在這個簡單的情況下也可以工作: https://docs.mongodb.com/manual/text-search/將受限於你的文本搜索,如果你需要升級 mongoizer。

Postgresql 可以做到,使用like,但我不夠熟悉,如果你有10k個條目,肯定沒問題,如果你期望100萬,mongo或es會更好。

如果您必須在 mongodb 和 es 之間進行選擇,您的問題必須更具體,對於全文,es 非常好,有很多功能,mongodb 也提供了一些不錯的數據庫工具。 有時 es 會更好,有時 mongo 會更好,這取決於你需要什么。 如果你只想要全文,es 是必須的。

組合es + mongodb效果很好,你在es中索引並執行全文搜索,你保留原始文檔,其中一些關鍵字段索引在mongodb中......

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM