中文全文检索pgroonga在HGDB-SEE V4.5.8版本编译

这篇具有很好参考价值的文章主要介绍了中文全文检索pgroonga在HGDB-SEE V4.5.8版本编译。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

PGroonga 官网:https://pgroonga.github.io/

Description:PGroonga (píːzí:lúnɡά) is a PostgreSQL extension to use Groonga as the index.PostgreSQL supports full text search against languages that use only alphabet and digit. It means that PostgreSQL doesn’t support full text search against Japanese, Chinese and so on. You can use super fast full text search feature against all languages by installing PGroonga into your PostgreSQL!

一、安装相关依赖包
yum install wget curl tar gzip gcc gcc-c++ make zlib zlib-devel msgpack msgpack-devel mecab mecab-devel lz4 lz4-devel
二、下载安装 git

注意:编译要求Git版本为 V2.7.4及以上版本

wget https://www.kernel.org/pub/software/scm/git/git-2.7.4.tar.gz --no-check-certificate
tar -vzxf git-2.7.4.tar.gz 
cd git-2.7.4/
#Configure
./configure --with-openssl=/usr/local/openssl
#编译安装
make && make install
#打开操作系统环境变量配置文件,修改环境变量
vi /etc/profile
      #在底部加上git相关配置
      export PATH=$PATH:/usr/local/git-2.7.4
#:wq保存,source命令生效
source /etc/profile
#查看git版本
git --version
三、下载编译安装 groonga

Description:Groonga is an open-source fulltext search engine and column store. It lets you write high-performance applications that requires fulltext search.

官网:https://groonga.org/

编译安装:https://groonga.org/docs/install/centos.html#centos-7

PS:下载source进行源码编译,官网上的groonga-release-latest.noarch.rpm直接在本地安装会有问题(可能会存在文件缺失)。

wget https://packages.groonga.org/source/groonga/groonga-13.0.9.tar.gz --no-check-certificate
tar -xvzf groonga-13.0.9.tar.gz
cd groonga-13.0.9
#Configure
./configure
#编译Build
make -j$(grep '^processor' /proc/cpuinfo | wc -l)
#install
sudo make install
#install之后,执行如下命令查看当前系统安装了哪些库? 
pkg-config --list-all
#查看是否能查到groonga,若没有查到groonga头文件和库文件的位置,编译器无法使用,需要设置PKG_CONFIG_PATH环境变量
#查找groonga.pc的位置
find / -name groonga.pc
#设置PKG_CONFIG_PATH环境变量
export PKG_CONFIG_PATH=/usr/local/lib/pkgconfig/
#查看是否可输出groonga
pkg-config --list-all
#正常可输出groonga   Groonga - An Embeddable Fulltext Search Engine
四、下载安装 xxHash

Description:xxHash is an Extremely fast Hash algorithm, processing at RAM speed limits. Code is highly portable, and produces hashes identical across all platforms (little / big endian).

Vcpkg用于在Windows、Linux、Mac上管理C和C++库,极大简化了第三方库的安装,它由微软开源,源码地址:https://github.com/Microsoft/vcpkg,最新发布版本为2023.04.15 Release,它的license为MIT。

Building xxHash - Using vcpkg

You can download and install xxHash using the vcpkg dependency manager

git clone https://github.com/Microsoft/vcpkg.git
cd vcpkg
./bootstrap-vcpkg.sh
./vcpkg integrate install
./vcpkg install xxhash
五、下载安装 pgroonga
git clone --recursive https://github.com/pgroonga/pgroonga.git
cd pgroonga
make 
make install
六、登录数据库

psql highgo sysdba

highgo=# select * from pg_available_extensions where name like '%roon%';
name        | default_version | installed_version | comment-------------------+-----------------+-------------------+-------------------------------------------------------
pgroonga          | 3.1.6           | 3.1.6             | Super fast and all languages supported full text search index based on Groonga
pgroonga_database | 3.1.6           |                   | PGroonga database management module
highgo=# create extension pgroonga;
错误:  扩展 "pgroonga" 已经存在
highgo=# \dx
                                                                 已安装扩展列表
        名称        | 版本  |      架构模式      |                                             描述                                              
--------------------+-------+--------------------+-----------------------------------------------------------------------------------------------
 hg_mac             | 1.0   | information_schema | hgdb mandatory access control without using selinux
 hg_permission      | 1.0   | information_schema | hg permission
 mysqlface          | 1.0   | public             | administrative functions for PostgreSQL
 orafce             | 3.9   | public             | Functions and operators that emulate a subset of functions and packages from the Oracle RDBMS
 passwordcheck      | 1.0   | information_schema | passwordcheck
 pg_buffercache     | 1.3   | public             | examine the shared buffer cache
 pg_stat_statements | 1.7   | public             | track execution statistics of all SQL statements executed
 pgroonga           | 3.1.6 | public             | Super fast and all languages supported full text search index based on Groonga
 plpgsql            | 1.0   | pg_catalog         | PL/pgSQL procedural language
 zhfts              | 1.1   | public             | RUM index access method
 zhparser           | 2.2   | public             | a parser for full-text search of Chinese
(11 行记录)
七、使用
1、启用全文搜索作为文本类型的列
CREATE TABLE memos (
  id integer,
  content text
);
CREATE INDEX pgroonga_content_index ON memos USING pgroonga (content);
INSERT INTO memos VALUES (1, 'PostgreSQL is a relational database management system.');
INSERT INTO memos VALUES (2, 'Groonga is a fast full text search engine that supports all languages.');
INSERT INTO memos VALUES (3, 'PGroonga is a PostgreSQL extension that uses Groonga as index.');
INSERT INTO memos VALUES (4, 'There is groonga command.');
SET enable_seqscan = off;

There are the following operators to perform full text search:

&@

&@~

LIKE

ILIKE

&@~ operator
You can use &@~ operator to perform full text search by query syntax such as keyword1 OR keyword2:

highgo=# SELECT * FROM memos WHERE content &@~ 'PGroonga OR PostgreSQL';
 id |                            content                             
----+----------------------------------------------------------------
  1 | PostgreSQL is a relational database management system.
  3 | PGroonga is a PostgreSQL extension that uses Groonga as index.
(2 行记录)

&@ operator
You can use &@ operator to perform full text search by one keyword:

highgo=# SELECT * FROM memos WHERE content &@ 'engine';
 id |                                content                                 
----+------------------------------------------------------------------------
  2 | Groonga is a fast full text search engine that supports all languages.
(1 行记录)


LIKE operator
PGroonga supports LIKE operator. You can perform fast full text search by PGroonga without changing existing SQL.
column LIKE '%keyword%' almost equals to column &@ 'keyword':

highgo=# SELECT * FROM memos WHERE content LIKE '%engine%';
 id |                                content                                 
----+------------------------------------------------------------------------
  2 | Groonga is a fast full text search engine that supports all languages.
(1 行记录)
2、Score(匹配精度排序)

You can use pgroonga.score function to get precision as a number. If a record is more precision against searched query, the record has more higher number.

You need to add primary key column into pgroonga index to use pgroonga.score function. If you don’t add primary key column into pgroonga index, pgroonga.score function always returns 0.

Here is a sample schema that includes primary key into indexed columns:

CREATE TABLE score_memos (
  id integer PRIMARY KEY,
  content text
);

CREATE INDEX pgroonga_score_memos_content_index
          ON score_memos
       USING pgroonga (id, content);
INSERT INTO score_memos VALUES (1, 'PostgreSQL is a relational database management system.');
INSERT INTO score_memos VALUES (2, 'Groonga is a fast full text search engine that supports all languages.');
INSERT INTO score_memos VALUES (3, 'PGroonga is a PostgreSQL extension that uses Groonga as index.');
INSERT INTO score_memos VALUES (4, 'There is groonga command.');
SET enable_seqscan = off;

--执行全文检索并获得分数
SELECT *, pgroonga_score(tableoid, ctid) FROM score_memos WHERE content &@ 'PGroonga' OR content &@ 'PostgreSQL';
 id |                            content                             | pgroonga_score 
----+----------------------------------------------------------------+----------------
  1 | PostgreSQL is a relational database management system.         |              1
  3 | PGroonga is a PostgreSQL extension that uses Groonga as index. |              2
(2 行记录)

--可以使用ORDER by子句中的pgroonga_score函数,按精度降序对匹配的记录进行排序:
highgo=# SELECT *, pgroonga_score(tableoid, ctid)
highgo-#   FROM score_memos
highgo-#  WHERE content &@ 'PGroonga' OR content &@ 'PostgreSQL'
highgo-#  ORDER BY pgroonga_score(tableoid, ctid) DESC;
 id |                            content                             | pgroonga_score 
----+----------------------------------------------------------------+----------------
  3 | PGroonga is a PostgreSQL extension that uses Groonga as index. |              2
  1 | PostgreSQL is a relational database management system.         |              1
(2 行记录)

更多用法详见官网:https://pgroonga.github.io/tutorial/

Author: HGDB-QIURU文章来源地址https://www.toymoban.com/news/detail-836819.html

到了这里,关于中文全文检索pgroonga在HGDB-SEE V4.5.8版本编译的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 图数据库Neo4J 中文分词查询及全文检索(建立全文索引)

    Neo4j的全文索引是基于Lucene实现的,但是Lucene默认情况下只提供了基于英文的分词器,下篇文章我们在讨论中文分词器(IK)的引用,本篇默认基于英文分词来做。我们前边文章就举例说明过,比如我要搜索苹果公司?首先我们要做的第一步在各个词条上创建全文索引,第二步

    2024年02月03日
    浏览(42)
  • pgsql_全文检索_使用空间换时间的方法支持中文搜索

    PostgreSQL 14.2, compiled by Visual C++ build 1914, 64-bit 提到全文检索首先想到的就是ES(ElasticSearch)和Lucene,专业且强大。对于一些小众场景对于搜索要求不高,数据量也不大的情况, 上ES等有些繁重,增加工作量还增加了后期运维成本。 PgSql也支持全文检索原理和ES一样,支持分词和反

    2024年02月04日
    浏览(40)
  • 万字详解PHP+Sphinx中文亿级数据全文检索实战(实测亿级数据0.1秒搜索耗时)

    Sphinx查询性能非常厉害,亿级数据下输入,大部分能在0.01~0.1秒,少部分再5秒之内查出数据。 官方文档:http://sphinxsearch.com/docs/sphinx3.html 极简概括: 由C++编写的高性能全文搜索引擎的开源组件,C/S架构,跨平台(支持Linux、Windows、MacOS),支持分布式部署,并可直接适

    2024年04月08日
    浏览(43)
  • 基于 centos7 搭建 laravel+scout+elasticsearch+ik-analyzer 用于中文分词全文检索服务及测试

    浏览该文章,建议先食用 异常问题 这一节 软件/框架 版本 jdk 19.0.2 elasticsearch 8.1.1 ik-analyzer 8.1.1 laravel 7.x-dev elasticsearch/elasticsearch 7.17.1 tamayo/laravel-scout-elastic 8.0.3 下载jdk传送门 安装 下载:wget https://download.oracle.com/java/19/latest/jdk-19_linux-x64_bin.rpm 安装:rpm -ivh jdk-19_linux-x64_bin.

    2023年04月09日
    浏览(46)
  • 全文检索-Elasticsearch-进阶检索

    本文记录谷粒商城高级篇的 Elasticsearch 进阶检索部分,续上之前记录的 Elasticsearch入门篇。 ES 支持两种基本方式检索 : 一个是通过使用 REST request URI 发送搜索参数(uri + 检索参数) 另一个是通过使用 REST request body 来发送它们(uri + 请求体) 请求体中写查询条件,语法: 示例

    2024年02月03日
    浏览(88)
  • 【全文检索】sqlite-fts4和pgsql的全文检索对比

    因为是Android项目,老系统中的全文检索是采用sqlite自带的fts4,然而后续由于地图要素全部转为线上,全文检索也需要同步在线查询,所以将整个全文检索的功能迁移到pgsql中。目前这块功能基本结束,这里来对两种全文检索方案做一个对比总结。 相比与fts5,fts4的好处是原生

    2024年02月05日
    浏览(47)
  • 全文检索-Es-初步检索(三)

    #为jmeter返回的结果 jmeter测试结果 请求头 http请求 put 返回结果 再次发送请求 post不带/带id保存 不带id 结果 二次请求结果 带id保存 结果 二次请求结果 结论 发送请求 查询-查看结果树 增加判断,确定是否修改 结果 查看修改是否成功 结果 更新文档 post/put带_update的请求(会比

    2024年02月14日
    浏览(43)
  • Elasticsearch 全文检索 分词检索-Elasticsearch文章四

    https://www.elastic.co/guide/en/enterprise-search/current/start.html https://www.elastic.co/guide/en/elasticsearch/reference/7.17/query-dsl-match-query.html Full text Query中,我们只需要把如下的那么多点分为3大类,你的体系能力会大大提升 很多api都可以查得到,我们只要大概知道有支持哪些功能 Elasticsearch 执行

    2024年02月14日
    浏览(52)
  • 实现全文检索的方法

    实现网站全文检索功能,可以采取多种方法,从简单的基于数据库的搜索到使用专门的全文检索系统。以下是一些常见的实现全文检索的方法: 1. **数据库全文索引**:    如果你的网站后端使用的是关系型数据库(如MySQL),大多数数据库管理系统都提供了全文索引的功能。

    2024年04月26日
    浏览(50)
  • elasticsearch全文检索

    传送门 best_fields 传送门 most_fields 当查询多字段包含相同文本以不同方式分词的时候此参数最有用, 传送门 cross_fields phrase和phrase_prefix 传送门 传送门

    2024年02月07日
    浏览(47)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包