zoukankan      html  css  js  c++  java
  • SQLite3 数据库全文搜索 SQL Server 红黑联盟

    SQLite3 数据库全文搜索 - SQL Server - 红黑联盟

    SQLite3 数据库全文搜索
    2010-06-10 13:57:27     我来说两句 

    收藏
      
    我要投稿    [字体:
    ]

    对于应用软件开发人员来说,要解决这个问题有许多的方案可以选择。如,利用 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扩展建立一个虚拟表。只有文本列位于这个虚拟表以内时,才可以被搜索,并且最后一列用来识别使用的分词器类型。

  • 相关阅读:
    OpenMp之reduction求和
    C++中的字节对齐
    java mail邮件发送(带附件) 支持SSL
    linux下通过命令启动多个终端运行对应的命令和程序
    JAVA数组的定义及用法
    ThreadPoolExecutor使用介绍
    命令拷屏之程序分析
    java实现第五届蓝桥杯供水设施
    java实现第五届蓝桥杯供水设施
    java实现第五届蓝桥杯供水设施
  • 原文地址:https://www.cnblogs.com/lexus/p/2541389.html
Copyright © 2011-2022 走看看