我的编程空间,编程开发者的网络收藏夹
学习永远不晚

SQLite3如何实现数据库全文搜索

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

SQLite3如何实现数据库全文搜索

这篇文章主要为大家展示了“SQLite3如何实现数据库全文搜索”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“SQLite3如何实现数据库全文搜索”这篇文章吧。

对于应用软件开发人员来说,要解决这个问题有许多的方案可以选择。如,利用 MySQL 和 PostgreSQL 或者 Sphinx 和 Lucene 这样的独立软件进行本地执行。然而,这些要么用起来棘手,要么就过度了。

幸运的是,Google 为 SQLite 贡献了一些资源以实现帮助。在版本 3.3.8 中第一次实现全文检索。此版本提供的功能可以创建一个依赖于外部延伸的虚拟表:在这里,全文搜索运算法则可用于任何虚拟表内的文本列。在PHP 5.3.0中,对应的支持只被默认的 PDO 和 SQLite3 激活。较早版本的PHP可以使用 PECL 的 SQLite3 扩展库。

并安装 SQLite 最新版本

# wget http://www.sqlite.org/sqlite-amalgamation-3.6.22.tar.gz
# tar -zxvf sqlite-amalgamation-3.6.22.tar.gz
# cd sqlite-3.6.22/

# CFLAGS="-DSQLITE_ENABLE_FTS3=1" ./configure
# make
# make install

完成

查看版本

# sqlite3 --version

创建一个搜索索引通常情况如下:

  • 把文本分解成记号。

  • 转换为小写字母。

  • 确定根词。

  • 建立索引。

在默认情况下,SQLite 提供了两个基本的分词器,Simple 和 Porter。它们可以控制字的分开方式。Simple 根据空格和标点符号将文本分解成不同的记号。Porter是专为英文使用而设计,它可以将大量的文字扩展化解为基础形式。例如,condolidate,consolidated,和 consolidating 这一类词语都会被转变成consolid。

遗憾的是,SQLite目前还没有取消停用词。所以常用词,例如,the,of和to仍位于索引内。这会极大地扩充索引的范畴并减缓搜索速度。最简单的解决办法是,在按下确认检索之前手动除去停用词。

下面,向您展示一些代码,教你如何创建自己的第一个全文索引。 SQLite之所以做到这些,是因为它通过使用FTS3扩展建立一个虚拟表。只有文本列位于这个虚拟表以内时,才可以被搜索,并且最后一列用来识别使用的分词器类型。

CREATE VIRTUAL TABLE example
USING FTS3(title TEXT, TOKENIZE SIMPLE)

创建表后,您可以使用 SELECT, INSERT,UPDATE 和 DELETE 语句查询此表。此处要附加说明的是:没有进一步的索引可以建立在表格上,所以简单的查询将导致对全表的扫描。

一旦你键入一些数据,你就可以试试。
本文中其余的例子,我会使用出自英文版维基百科的所有标题。
我的有 5,453,838 行,相比较于没有索引时的 146MB,若使用全文索引,其大小是 233MB

检索

搜索索引由匹配操作完成。查询可以包含多个方面,在这种情况下,只有文字行包含所有条件时才返回。还有支持“OR”的查询,但该查询排除了条件,精确的词组匹配以及前缀检索。

SELECT rowid, title FROM example WHERE title MATCH tea bag
SELECT rowid, title FROM example WHERE title MATCH tea OR bag
SELECT rowid, title FROM example WHERE title MATCH tea -bag
SELECT rowid, title FROM example WHERE title MATCH "tea bag"
SELECT rowid, title FROM example WHERE title MATCH tea*

请注意:OR区分大小写,并且在一次查询中只允许一个MATCH操作。

创建片段

为了向匹配的搜索结果提供语境,可以使用 snippet() 功能。这一功能将突出显示搜索结果中任何文字列的关键词。

SELECT title, snippet(example)
FROM example
WHERE <span sty

以上是“SQLite3如何实现数据库全文搜索”这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注亿速云行业资讯频道!

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

SQLite3如何实现数据库全文搜索

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

如何使用MongoDB实现数据的全文搜索功能

如何使用MongoDB实现数据的全文搜索功能导语:随着信息化时代的迅猛发展,全文搜索功能成为了许多应用程序的必备功能。作为一个流行的NoSQL数据库,MongoDB也提供了强大的全文搜索能力。本文将介绍如何使用MongoDB实现数据的全文搜
2023-10-22

SQL Server如何实现全文搜索查询

本篇内容介绍了“SQL Server如何实现全文搜索查询”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!一、概述全文索引在表中包括一个或多个基
2023-07-05

SpringBoot+Elasticsearch如何实现数据搜索

这篇文章主要介绍了SpringBoot+Elasticsearch如何实现数据搜索的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇SpringBoot+Elasticsearch如何实现数据搜索文章都会有所收获,
2023-06-30

lucene全文搜索怎么实现数据库的like匹配效果

本篇内容介绍了“lucene全文搜索怎么实现数据库的like匹配效果”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!一般情况下,全文搜索是通过
2023-06-26

Xamarin如何实现全局搜索

这篇文章主要为大家展示了“Xamarin如何实现全局搜索”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“Xamarin如何实现全局搜索”这篇文章吧。全局搜索新版本的一个顶级特征就是工具栏上的全局搜
2023-06-27

Vue3如何实现全局搜索框

这篇文章主要介绍“Vue3如何实现全局搜索框”,在日常操作中,相信很多人在Vue3如何实现全局搜索框问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Vue3如何实现全局搜索框”的疑惑有所帮助!接下来,请跟着小编
2023-07-05

linux如何实现文件搜索

这篇文章主要介绍linux如何实现文件搜索,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!1、linux中包含大量的文件,对于文件查找,linux提供了find命令。find是一个非常有效的工具,它可以遍历目标目录甚至
2023-06-09

如何在阿里云数据库中搜索数据全面指南

在阿里云数据库中搜索数据是一项基本任务,但许多用户可能会遇到一些问题。本文将详细介绍如何在阿里云数据库中搜索数据,并提供一些有用的技巧和建议。在阿里云数据库中搜索数据是一个非常重要的过程,因为这可以帮助你快速找到需要的信息。然而,对于不熟悉数据库的人来说,这个过程可能会显得有些复杂。下面,我们将详细地介绍如何在阿
如何在阿里云数据库中搜索数据全面指南
2023-12-10

如何利用Sphinx实现高效的全文搜索?(Sphinx如何助力快速全文检索?)

Sphinx是一款开源全文搜索引擎,可提供快速的全文检索体验。它通过索引生成、快速查询和高级功能(如模糊搜索、同义词和地理搜索)实现高效的搜索。企业可以通过将其集成到Web框架、数据库或通过API,轻松实施Sphinx。Sphinx的优点包括快速响应、相关性高的结果、可扩展性和成本效益,使其成为提升网站和应用程序搜索功能的理想选择。
如何利用Sphinx实现高效的全文搜索?(Sphinx如何助力快速全文检索?)
2024-04-02

Spring Boot整合Elasticsearch如何实现全文搜索引擎

这篇文章给大家分享的是有关Spring Boot整合Elasticsearch如何实现全文搜索引擎的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。简单说,ElasticSearch(简称 ES)是搜索引擎,是结构化
2023-05-30

如何用Linux命令实现全局搜索

本篇文章为大家展示了如何用Linux命令实现全局搜索,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。在Linux中一切皆为文件,这就显得文件管理尤为重要,当文件找不到时可以使用全局搜索命令。 第一种:
2023-06-28

Elasticsearch分布式搜索与NoSQL数据库的协同工作(Elasticsearch与NoSQL数据库如何协同实现分布式搜索?)

Elasticsearch(ES)和NoSQL数据库协同实现分布式搜索,为大规模数据处理提供高效搜索功能和可扩展性。ES索引NoSQL数据,通过反向索引技术快速搜索文档。NoSQL数据库存储原始数据,确保数据完整性和一致性。通过这种协作,ES提供可扩展性、快速搜索和查询灵活性。该解决方案广泛应用于电子商务搜索、日志分析、全文搜索和欺诈检测等用例中。
Elasticsearch分布式搜索与NoSQL数据库的协同工作(Elasticsearch与NoSQL数据库如何协同实现分布式搜索?)
2024-04-02

Xunsearch全文搜索引擎的工作原理与优势分析(Xunsearch是如何实现高效全文搜索的?)

Xunsearch全文搜索引擎通过文档分词、词元索引、评分计算和结果排序实现高效搜索。其优势包括高效搜索、可扩展性强、灵活定制、支持多种数据源、丰富功能和开源免费。Xunsearch采用倒排索引结构、分布式架构和高效查询执行算法等技术来实现高性能。
Xunsearch全文搜索引擎的工作原理与优势分析(Xunsearch是如何实现高效全文搜索的?)
2024-04-02

如何使用MySQL的全文检索功能实现高效率的文本搜索?

如何使用MySQL的全文检索功能实现高效率的文本搜索?作者:AI助手摘要:本文介绍了如何使用MySQL的全文检索功能,在数据库中实现高效率的文本搜索。首先,我们会讲解MySQL全文索引的基本原理和使用方法。然后,我们会探讨如何优化全文检索的
2023-10-22

编程热搜

目录