数据库 频道

如何选择搜索型数据库?

搜索型数据库除了存储数据外,还为数据编制索引,因此用户可以使用关键字搜索数据集合。目前有多种搜索型数据库可供选择,让我们来看看大家比较关注的一些常见功能。

 Apache Lucene 索引

Apache Lucene 是一个用 Java 编写的开源库,支持跨平台。Lucene 是最常用的搜索引擎软件之一,被 Apache Solr 和 Elasticsearch 等采用。因为它具有高性能和各种功能,如全文搜索、增量和批量索引、较少的 RAM 需求、排序、具有合并结果的多个索引、连接和分组、可插拔的排名模型以及可配置的搜索引擎。它还支持基于排名和字段的搜索结果,以及不同类型的查询,如短语、通配符、范围和邻近性查询。

文档格式

大多数搜索型数据库支持以 JSON、XML 和 CSV 等常用格式解析文档并编制索引。对于其他文档格式,大多数搜索型数据库都支持 Apache Tika。Tika 是一个软件工具包,支持上千种不同文件类型的文本和元数据提取。

全文搜索

有些搜索型数据库只搜索预定义的标题、元数据或文档摘要,而不是完整的文档文本。可以通过使用关键字、指定字段或短语,或根据与搜索词相近的词进行近似搜索来改进全文搜索。

近实时搜索

近实时(NRT)搜索可在更新完成后的几毫秒内对文档进行搜索。NRT 对用户是透明的,通过有效的 RAM 管理和使用 RAM 来缓存更新,而不是将每次更新与磁盘同步,从而减少了输入/输出 (I/O) 开销。

模式 API(Schema API)

Lucene 支持使用 HTTP URL(语法为 http://:/solr/)搜索集合的 Schema API。使用模式 API,可以添加、更新、搜索和删除集合中的字段。支持的输出格式有 JSON 和 XML。

词干化(Stemming)

词干化是将转折词还原为词干,这样在搜索某个术语时,也会返回带有转折词的文档。例如,下面是从三个不同的文档中提取的三个语句:

  • 经过大量测试,应用程序已经开发完成(developed)。

  • 应用程序正在开发中(development)。

  • 开发应用程序需要大量测试(develop)。

如果这三个文档都被编入索引,在不支持词干处理的情况下,搜索 “develop ”只会返回第三个文档。但如果支持词干处理,则会返回带有“development”和“developed”转折词的文档。

分布式、可扩展和高可用性

大多数搜索型都是分布式的,这意味着它们部署在机器集群上,使数据库具有容错性。大家也比较关注搜索型数据库是否具有可扩展性,以便根据需要增减集群规模。分片用于对索引数据进行分区,这样分片本身就可以复制,从而实现高可用性。

这些功能是大多数搜索型数据库的共同特点,因此在数据库选型时,请结合业务场景需要选择。

关于作者

Deepak Vohra

0
相关文章