我正在一个网站上工作,在那里用户可以创建一个数据库条目。这些条目都是相同的形式,所以到目前为止,我使用的是Sqlite (与FTS5),这是我所知道的唯一的数据库;)
然而,用户可以在网站上搜索这些条目是至关重要的。全文搜索工作得很好(用户大概知道他们在寻找什么),但我需要两个改进:
例如:如果用户将"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有包含我需要的功能的搜索引擎吗?还是值得深入研究弹性搜索等问题的解决方案?
我在这方面发现的大多数文章都有5-10年的历史,所以我想知道目前关于数据库中的搜索引擎的情况是什么。任何提示都非常感谢。
发布于 2021-01-02 12:33:15
Elasticsearch肯定会成功的。您只需考虑如何对文档进行索引,就可以以索引的方式找到它们,在上下文中,默认文本似乎将与匹配查询一起工作:
https://www.elastic.co/guide/en/elasticsearch/reference/current/full-text-queries.html
在这种简单的情况下,MongoDb也能工作:https://docs.mongodb.com/manual/text-search/,但是mongo不适用于令牌程序,所以如果您需要升级文本搜索,mongo将是有限的。
Postgresql可以这样做,但我还不太熟悉,如果您有10k条目,它将是肯定的,如果您期望100万,mongo或es会更好。
如果您必须在mongodb和es之间进行选择,您必须在问题中更加具体,对于全文,es确实很好,有很多特性,mongodb也提供了一些很好的数据库工具。有时会更好,有时是芒果,取决于你需要什么。如果你只想要全文,那肯定是必须的。
发布于 2021-01-02 12:46:34
合并es + mongodb很好,您可以在es中索引和执行全文搜索,并将原始文档保留在mongodb中索引的一些关键字段中。
https://stackoverflow.com/questions/65535206
复制相似问题