MongoDB近年来一直是最受欢迎的 nosql数据库,其知名度在开发人员和技术社区之间的流行不断增长。
这样做的一些主要原因是 - 灵活性,可伸缩性,性能,基于云的集成和社区。
但是,当涉及全文搜索时,很少有可用和合适的选项,其中 elasticsearch 是所有人中的大象,其次是 solr 。
那么,什么是全文搜索?
全文搜索是一项功能,它允许您使用自然语言查询来搜索文本数据以获取特定单词或短语。它通常用于搜索引擎,电子商务网站和内容管理系统等应用程序,在该应用程序中,快速准确地搜索大量文本数据的能力至关重要。
MongoDB开发人员在过去的一年中一直在不断工作,为我们提供了全文搜索。
如何使用mongodb地图集全文搜索:
通过使用MongoDB Atlas搜索,我们可以轻松地搜索数据库的特定字段,此外,我们也可以使用运算符来搜索单词或短语,运算符,例如 - 和,或者,或者不
对于使用MongoDB Atlas全文搜索,我们需要注意一些步骤和规则/语法。
- 创建一个MongoDB Atlas群集:如果还没有,请注册MongoDB地图集并创建一个新的集群。确保选择一个支持全文搜索的集群层,例如M10或更高。
- 启用全文搜索:您的群集配置了,请转到Atlas UI的“索引”选项卡,然后单击“添加索引”。选择“全文搜索”作为索引类型和索引字段。然后,要启用全文搜索群集,请单击“创建索引”。
- 配置搜索:启用了全文搜索后,您可以使用Atlas UI中的“搜索配置”选项卡配置搜索设置。在这里,您需要配置index。
- 我会推荐 Visual Editor 首次易于使用。
- 在选择Visual Editor之后,在配置搜索中,我们需要命名索引,然后选择需要进行文本搜索的数据库和集合。
- Index configuration和Field映射这是我们全文搜索的最重要步骤。在索引配置中,我们定义分析仪和字段/路径我们需要搜索,例如,您想在其中搜索产品名称的字段名称产品。因此,您将在字段映射中输入字段名称
- 进行所有这些配置后,您可以单击“保存”,它将开始启用所有定义的字段和集合到全文搜索中,此过程将花费一些时间,并且仅取决于集合的大小。
- 现在,您将看到这样的仪表板,可以在其中测试搜索,但以有限的方式进行示例 - 单击选项查询您可以在接口中搜索单个文本或短语。 li>
对于,使用运算符喜欢一个或多个单词 and,或者,或者,您不需要编写查询(请参阅参考图像)
现在,让我们来到 mongodb atlas搜索语法和基本查询:
db.collection.aggregate([
{
$search: {
index: "your-index-name",
"text": {
"query": "your-word",
"path": "field"
}
}
}
])
解释 -
在上面的查询中,我们正在使用聚合,因为搜索始终可以与聚合一起使用,并且可以使用。
$搜索: $搜索阶段在指定的字段或字段上执行全文搜索,该字段必须由Atlas搜索索引覆盖。定义索引是选项,因为如果不定义索引名称,它将始终使用默认值。但是,如果您有多个索引,则需要定义。另外,最佳实践是定义索引名称。
查询:您将定义要搜索的单词。如果您要搜索短语,则需要更改文本:用短语
路径:在路径中,我们需要定义正在搜索单词的字段,我们也可以在阵列表单中定义多个路径,它只会使用我们在索引制作时定义的那些路径。
示例:
{
"_id" : 1,
"type" : "apple",
"description" : "Apples come in several varieties, including Fuji, Granny Smith, and Honeycrisp.",
"category" : "nonorganic",
"in_stock" : false
},
{
"_id" : 2,
"type" : "banana",
"description" : "Bananas are usually sold in bunches of five or six.",
"category" : "nonorganic",
"in_stock" : true
}
在上述数据中,如果我们需要搜索上述2个文档中的香蕉或苹果等术语。我们可以轻松地搜索并返回包含此单词的文档。
因此,假设我们需要在这里和字段中 search 描述,我的索引名称是搜索 - 弗里特 -
查询:
db.collection.aggregate([
{
$search: {
index: "search-fruits", //define your index name
"text": {
"query": "Bananas",
"path": "description"
}
}
}
])
以上查询返回1个文档2,因为只有1个文档包含香蕉。
{
"_id" : 2,
"type" : "banana",
"description" : "Bananas are usually sold in bunches of five or six.",
"category" : "nonorganic",
"in_stock" : true
}
有更多的预先查询 - - 使用运算符喜欢的复合搜索 and,or,或者,不应该(应该,必须,useussnot)和 - 自动完成,模糊搜索等。我们将很快在下一篇文章中介绍这些预先的主题!
在使用MongoDB Atlas在Elasticsearch和Solr -
上使用MongoDB Atlas全文搜索之前有几点要考虑的观点。- 集成在数据库中: mongodb atlas Full Text搜索集成在MongoDB数据库中,而Elasticsearch和Solr是必须与单独的数据库集成的独立搜索引擎。此集成可以简化已经使用MongoDB的用户的部署和管理过程。
- 本机JSON支持: MongoDB以JSON式格式存储数据,而Atlas Full-Text搜索利用了此格式进行索引和搜索。 Elasticsearch和Solr也支持JSON,但他们使用不同的数据结构和查询语法。
- 自动索引: mongodb atlas全文搜索会自动索引数据,因为数据已添加到数据库中,使开发人员更容易实现搜索功能,而无需单独的索引过程。
- 扩展架构: MongoDB地图集设计为可扩展,并且可以处理大量数据和并发用户。它允许创建副本集和碎片簇,从而更容易根据需要扩展搜索能力。
- 不需要专用搜索服务器:在MongoDB Atlas Full-Text搜索中,与Elasticsearch或Solr不同,无需专用搜索服务器或基础架构。这可以简化用户的部署和管理过程。
- 成本:如果您已经在使用MongoDB,则使用MongoDB全文搜索可能比使用Elasticsearch更具成本效益,这需要其他基础架构和管理。
结论:最后,使用MongoDB Atlas Full-Text搜索完全取决于您的特定用例。尽管它缺乏Elasticsearch或Solr的高级功能,但它确实提供了许多优点,例如易用性,与MongoDB生态系统集成以及可扩展性。最后,由您评估您的特定需求并确定哪种全文搜索引擎最能满足它们。