关于整合数据库查询和全文搜索功能的备忘录(Oracle、MongoDB、Elasticsearch、Couchbase)

首先

现在的应用程序中,除了常见的基于SQL实现的一般搜索外,对于文本进行全文搜索的需求是很常见的。大多数关系型数据库管理系统提供了基于B树的索引功能来满足前一种需求。对于文本搜索的需求,通常使用基于Lucene的搜索引擎,例如ElasticSearch和Solr。

与Oracle中的全文搜索功能集成

此外,我们还可以看到将全文搜索功能整合到现有数据库中的趋势。虽然无法详述每一个具体方法,但以下是Oracle中的一个应用示例。

    • Oracle B2B ServiceにおけるElasticSearch機能提供

 

    Oracle NoSQLとElasticSearchとの統合

在将关系型数据库(RDBMS)和ElasticSearch的功能整合时,会面临一些特定的挑战。以下是一些示例。

    • Luceneベースの検索はJOINをサポートしていないため、データモデルを大幅に非正規化する必要がある

 

    • ElasticSearch APIを使用して検索を実装するための開発作業。

 

    ElasticSearchをセットアップするためのリソース要件、およびElasticSearchへRDBMSのデータを取り込むためのストレージ要件。

在MongoDB中与全文搜索功能的集成

MongoDB Atlas Search 在其托管服务 Atlas 中添加了基于 Lucene 的搜索功能,使用了其查询语言 MQL。

关于将搜索功能集成到MongoDB MQL中,已知有以下限制。

    • Atlasでのみ利用でき、オンプレミス製品では利用できない。

 

    全文検索は、aggregate()パイプライン内の最初の操作としてのみ実行可能

从ElasticSearch到SQL的方法

相反地,也可以看到从ElasticSearch方面开启使用SQL的动态。

    • ElasticsearchにおけるSQLの使用

 

    Open Distro for Elasticsearch

毫无疑问,这种方法也有其固有的局限性(在下面的官方网站上整理了)。

    SQL Limitations

在Couchbase中将SQL和全文搜索进行整合。

Couchbase在历史上一直支持查询语言和全文搜索功能。Couchbase的查询语言N1QL支持几乎所有在成熟的数据库中可用的操作。例如,支持类似关系型数据库的连接操作、聚合操作、基于规则和成本进行查询优化。此外,还包含了NEST、UNNEST、ARRAY等附加功能,N1QL将对JSON文档特有的数据结构的操作整合到了SQL中。

在Couchbase的N1QL中,一个重要的要点是它将全文搜索功能无缝集成到N1QL语言中。

    Couchbase 6.6 Flex Index

当然,Couchbase也面临着一些特定的挑战。例如,对于CJK(中日韩)语言的支持仅限于基本的Unicode规定水平,并且不支持用户自定义词典。

最终

本文整理了随着全文搜索功能需求的增加和普及,各种数据库中全文搜索功能与查询语言的集成的进展情况。

仅为参考

甲骨文所创建的NoSQL数据库,其本质是什么?

发布支持Couchbase的Flex索引。

广告
将在 10 秒后关闭
bannerAds