ホームページ データベース mysql チュートリアル 使用postgreSQL+bamboo搭建比lucene方便N倍的全文搜索

使用postgreSQL+bamboo搭建比lucene方便N倍的全文搜索

Jun 07, 2016 pm 02:53 PM
lucene 使用 建てる

使用postgreSQL+bamboo搭建比lucene方便N倍的全文搜索 所有用到到包有: cmake-2.6.4.tar.gz (编nlpbamboo用) CRF++-0.53.tar.gz(同上) nlpbamboo-1.1.1.tar.bz2(分词用) postgreSQL-8.3.3.tar.gz(索引用) 安装pgsql tar -zxvf postgreSQL-8.3.3.tar.gz


使用postgreSQL+bamboo搭建比lucene方便N倍的全文搜索

 

所有用到到包有:

cmake-2.6.4.tar.gz (编nlpbamboo用)

CRF++-0.53.tar.gz(同上)

nlpbamboo-1.1.1.tar.bz2(分词用)

postgreSQL-8.3.3.tar.gz(索引用)

安装pgsql

tar -zxvf postgreSQL-8.3.3.tar.gz

cd postgre-8.3.3

./configure –prefix=/opt/pgsql

make

make install

useradd postgre

chown -R postgre.postgre /opt/pgsql

su – postgre

vi ~postgre/.bash_profile

添加

export PATH

PGLIB=/opt/pgsql/lib

PGDATA=/data/PGSearch

PATH=$PATH:/opt/pgsql/bin

MANPATH=$MANPATH:/opt/pgsql/man

export PGLIB PGDATA PATH MANPATH

# mkdir -p /data/PGSearch

# chown -R postgre.postgre /data/PGSearch

# chown -R postgre.postgre /opt/pgsql

#sudo -u postgre /opt/pgsql/bin/initdb –locale=zh_CN.UTF-8 –encoding=utf8 -D /data/PGSearch

#sudo -u postgre /opt/pgsql/bin/postmaster -i -D /data/PGSearch & //允许网络访问

#sudo -u postgre /opt/pgsql/bin/createdb kxgroup
 

# vim /data/PGSearch/pg_hba.conf 如下增加可访问的机器:  www.2cto.com  

host all all 10.2.19.178 255.255.255.0 trust

#su – postgre

$pg_ctl stop

$postmaster -i -D /data/PGSearch &

安装中文分词(Cmake CRF++ bamboo)

 

Cmake是为了编译bamboo,CRF++是bamboo依赖的。

tar -zxvf cmake-2.6.4.tar.gz

cd cmake-2.6.4

./configure

gmake

make install

tar -zxvf CRF++-0.53.tar.gz

cd CRF++-0.53

./configure

make

make install

tar -jxvf nlpbamboo-1.1.1.tar.bz2

cd nlpbamboo-1.1.1

mkdir build

cd build/

cmake .. -DCMAKE_BUILD_TYPE=release

make all

make install

cp index.tar.bz2 /opt/bamboo/

cd /opt/bamboo/

tar -jxvf index.tar.bz2

#/opt/bamboo/bin/bamboo

如果出现:

ERROR: libcrfpp.so.0: cannot open shared object file: No such file or directory

就执行:

ln -s /usr/local/lib/libcrfpp.so.* /usr/lib/

ldconfig

增加上中文分词扩展到pgsql

 

#vim /root/.bash_profile 也增加:

PGLIB=/opt/pgsql/lib

PGDATA=/data/PGSearch

PATH=$PATH:/opt/pgsql/bin

MANPATH=$MANPATH:/opt/pgsql/man

export PGLIB PGDATA PATH MANPATH

#source ~/.bash_profile

cd /opt/bamboo/exts/postgres/chinese_parser/

make

make install

su – postgre

cd /opt/pgsql/share/contrib/

touch /opt/pgsql/share/tsearch_data/chinese_utf8.stop

psql kxgroup

\i chinese_parser.sql 导入
 

再执行下面的sql,已经可以将一段话分词了:

SELECT to_tsvector(’chinesecfg’, ‘结果在命令行下执行bamboo才知道’);

先到这里,下一部分讲述对TEXT字段进行索引和查询,完整构造一整个搜索引擎。

  www.2cto.com  

一、基础篇

本回从一条sql开始:

select * from dbname where field_name @@ ‘aa|bb’ order by rank(field_name, ‘aa|bb’);

从这个sql字面意思讲解:从 dbname这个表中查field_name匹配aa或者是bb的词,并且按照他们的匹配的RANK排序。

基本上明白上面这段话后,来学习四个概念:tsvector、 tsquery、 @@ 、gin。

1.tsvector:

在postgreSQL 8.3自带支持全文检索功能,在之前的版本中需要安装配置tsearch2才能使用。它提供两个数据类型(tsvector,tsquery),并且通过 动态检索自然语言文档的集合,定位到最匹配的查询结果,tsvector正是其中之一。

 

一个tsvector的值是唯一分词的分类列表,把一话一句词格式化为不同的词条,在进行分词处理的时候,tsvector会自动去掉分词中重复的词条,按照一定的顺序装入。例如

SELECT ‘a fat cat sat on a mat and ate a fat rat’::tsvector;

tsvector

—————————————————-

‘a’ ‘on’ ‘and’ ‘ate’ ‘cat’ ‘fat’ ‘mat’ ‘rat’ ’sat’

通过tsvector把一个字符串按照空格进行分词,这可以把分词后的词按照出现的次数排成一排(还会按词长度)。

对于英文和中文的全文检索我们还要看下面这条sql:

SELECT to_tsvector(’english’, ‘The Fat Rats’);

to_tsvector

—————–

‘fat’:2 ‘rat’:3

to_tsvector函数来是tsvector规格化的,在其中可指定所使用的分词。

 

2.tsquery:

顾名思义,tsquery,表示的应该是查询相关的.tsquery是存储用于检索的词条.并且可以联合使用boolean 操作符来连接, & (AND), | (OR), and ! (NOT). 使用括号(),可以强制分为一组.

同时,tsquery 在做搜索的时候,也可以使用权重,并且每个词都可以使用一个或者多个权重标记,这样在检索的时候,会匹配相同权重的信息.跟上面的tsvector相同,tsquery也有一个to_tsquery函数.

3.@@:

在postgresql中全文检索匹配操作使用@@ 操作符,如果一个

tsvector(document) 匹配到 tsquery(query)则返回true.

  www.2cto.com  

看一个简单的例子:

SELECT ‘a fat cat sat on a mat and ate a fat rat’::tsvector @@ ‘cat & rat’::tsquery;

?column?

———-

t

我们在处理索引的时候还是要使用他们的函数如下:

SELECT to_tsvector(’fat cats ate fat rats’) @@ to_tsquery(’fat & rat’);

?column?

———-

t

并且操作符 @@ 可以使用text作为tsvector和tsquery.如下操作符可以使使用的方法

tsvector @@ tsquery

tsquery  @@ tsvector

text @@ tsquery

text @@ text

上面的前两种我们已经使用过了,但是后两种,

text @@ tsquery 等同于 to_tsvector(x) @@ y.

text @@ text 等同于 to_tsvector(x) @@ plainto_tsquery(y).(~)plainto_tsquery在后面讲。。。
 

4.gin:

gin是一种索引的名称,全文索引用的。

我们可以通过创建gin索引来加速检索速度.例如

CREATE INDEX pgweb_idx ON pgweb USING gin(to_tsvector(’english’, body));

创建索引可以有多种方式.索引的创建甚至可以连接两个列:

CREATE INDEX pgweb_idx ON pgweb USING gin(to_tsvector(’english’, title || body));

  www.2cto.com  

二、提高篇

基础知识学完了,应该上阵了,为了实现全文检索,我们需要把一个文档创建一个tsvector 格式,并且通过tsquery实现用户的查询,在查询中我们返回一个按照重要性排序的查询结果。

先看一个to_tsquery的sql:

SELECT to_tsquery(’english’, ‘Fat | Rats:AB’);

to_tsquery

——————

‘fat’ | ‘rat’:AB

可以看出,to_tsquery函数在处理查询文本的时候,查询文本的单个词之间要使用逻辑操作符(& (AND), | (OR) and ! (NOT))连接(或者使用括号)。
 

如果执行下面这条sql就会出错:

SELECT to_tsquery(’english’, ‘Fat  Rats’);

plainto_tsquery函数却可以提供一个标准的tsquery,如上面的例子,plainto_tsquery会自动加上逻辑&操作符。

SELECT plainto_tsquery(’english’, ‘Fat  Rats’);

plainto_tsquery

—————–

‘fat’ & ‘rat’

但是plainto_tsquery函数不能够识别逻辑操作符和权重标记。

SELECT plainto_tsquery(’english’, ‘The Fat & Rats:C’);

plainto_tsquery

———————

‘fat’ & ‘rat’ & ‘c’

  www.2cto.com 

三、终结篇

看完上面的一堆后,千言万语汇成一句话,本文主要讲的是一条sql,在加了第一部分里所讲述的扩展后,使用下面的sql,从一个字段中搜一句话,还要排序出来:

select * from tabname where to_tsvector(’chinesecfg’,textname) @@ plainto_tsquery(’搜点啥’) order by ts_rank(to_tsvector(’chinesecfg’,textname),plainto_tsquery(’搜点啥’)) limit 10;

之前的create table create index就不写了。授人以渔才是关键。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

Video Face Swap

Video Face Swap

完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

マグネットリンクの使い方 マグネットリンクの使い方 Feb 18, 2024 am 10:02 AM

マグネット リンクは、リソースをダウンロードするためのリンク方法であり、従来のダウンロード方法よりも便利で効率的です。マグネット リンクを使用すると、中間サーバーに依存せずに、ピアツーピア方式でリソースをダウンロードできます。この記事ではマグネットリンクの使い方と注意点を紹介します。 1. マグネット リンクとは? マグネット リンクは、P2P (Peer-to-Peer) プロトコルに基づくダウンロード方式です。ユーザーはマグネット リンクを通じてリソースの発行者に直接接続し、リソースの共有とダウンロードを完了できます。従来のダウンロード方法と比較して、磁気

mdfおよびmdsファイルの使用方法 mdfおよびmdsファイルの使用方法 Feb 19, 2024 pm 05:36 PM

mdf ファイルと mds ファイルの使用方法 コンピューター技術の継続的な進歩により、さまざまな方法でデータを保存および共有できるようになりました。デジタル メディアの分野では、特殊なファイル形式に遭遇することがよくあります。この記事では、一般的なファイル形式である mdf および mds ファイルについて説明し、その使用方法を紹介します。まず、mdf ファイルと mds ファイルの意味を理解する必要があります。 mdf は CD/DVD イメージ ファイルの拡張子で、mds ファイルは mdf ファイルのメタデータ ファイルです。

CrystalDiskmarkとはどのようなソフトウェアですか? -crystaldiskmarkの使い方は? CrystalDiskmarkとはどのようなソフトウェアですか? -crystaldiskmarkの使い方は? Mar 18, 2024 pm 02:58 PM

CrystalDiskMark は、シーケンシャルおよびランダムの読み取り/書き込み速度を迅速に測定する、ハード ドライブ用の小型 HDD ベンチマーク ツールです。次に、編集者が CrystalDiskMark と Crystaldiskmark の使用方法を紹介します。 1. CrystalDiskMark の概要 CrystalDiskMark は、機械式ハード ドライブとソリッド ステート ドライブ (SSD) の読み取りおよび書き込み速度とパフォーマンスを評価するために広く使用されているディスク パフォーマンス テスト ツールです。 ). ランダム I/O パフォーマンス。これは無料の Windows アプリケーションで、使いやすいインターフェイスとハード ドライブのパフォーマンスのさまざまな側面を評価するためのさまざまなテスト モードを提供し、ハードウェアのレビューで広く使用されています。

foob​​ar2000のダウンロード方法は? -foobar2000の使い方 foob​​ar2000のダウンロード方法は? -foobar2000の使い方 Mar 18, 2024 am 10:58 AM

foob​​ar2000 は、音楽リソースをいつでも聴くことができるソフトウェアです。あらゆる種類の音楽をロスレス音質で提供します。音楽プレーヤーの強化版により、より包括的で快適な音楽体験を得ることができます。その設計コンセプトは、高度なオーディオをコンピュータ上で再生可能 デバイスを携帯電話に移植し、より便利で効率的な音楽再生体験を提供 シンプルでわかりやすく、使いやすいインターフェースデザイン 過度な装飾や煩雑な操作を排除したミニマルなデザインスタイルを採用また、さまざまなスキンとテーマをサポートし、自分の好みに合わせて設定をカスタマイズし、複数のオーディオ形式の再生をサポートする専用の音楽プレーヤーを作成します。過度の音量による聴覚障害を避けるために、自分の聴覚の状態に合わせて調整してください。次は私がお手伝いさせてください

BTCC チュートリアル: BTCC 取引所で MetaMask ウォレットをバインドして使用する方法は? BTCC チュートリアル: BTCC 取引所で MetaMask ウォレットをバインドして使用する方法は? Apr 26, 2024 am 09:40 AM

MetaMask (中国語ではリトル フォックス ウォレットとも呼ばれます) は、無料で評判の高い暗号化ウォレット ソフトウェアです。現在、BTCC は MetaMask ウォレットへのバインドをサポートしており、バインド後は MetaMask ウォレットを使用してすぐにログイン、値の保存、コインの購入などが可能になり、初回バインドで 20 USDT のトライアル ボーナスも獲得できます。 BTCCMetaMask ウォレットのチュートリアルでは、MetaMask の登録方法と使用方法、および BTCC で Little Fox ウォレットをバインドして使用する方法を詳しく紹介します。メタマスクウォレットとは何ですか? 3,000 万人を超えるユーザーを抱える MetaMask Little Fox ウォレットは、現在最も人気のある暗号通貨ウォレットの 1 つです。無料で使用でき、拡張機能としてネットワーク上にインストールできます。

NetEase メールボックス マスターの使用方法 NetEase メールボックス マスターの使用方法 Mar 27, 2024 pm 05:32 PM

NetEase Mailbox は、中国のネットユーザーに広く使用されている電子メール アドレスとして、その安定した効率的なサービスで常にユーザーの信頼を獲得してきました。 NetEase Mailbox Master は、携帯電話ユーザー向けに特別に作成された電子メール ソフトウェアで、電子メールの送受信プロセスが大幅に簡素化され、電子メールの処理がより便利になります。 NetEase Mailbox Master の使い方と具体的な機能について、以下ではこのサイトの編集者が詳しく紹介しますので、お役に立てれば幸いです。まず、モバイル アプリ ストアで NetEase Mailbox Master アプリを検索してダウンロードします。 App Store または Baidu Mobile Assistant で「Ne​​tEase Mailbox Master」を検索し、画面の指示に従ってインストールします。ダウンロードとインストールが完了したら、NetEase の電子メール アカウントを開いてログインします。ログイン インターフェイスは次のとおりです。

Baidu Netdisk アプリの使用方法 Baidu Netdisk アプリの使用方法 Mar 27, 2024 pm 06:46 PM

クラウド ストレージは今日、私たちの日常生活や仕事に欠かせない部分になっています。中国有数のクラウド ストレージ サービスの 1 つである Baidu Netdisk は、強力なストレージ機能、効率的な伝送速度、便利な操作体験により多くのユーザーの支持を得ています。また、重要なファイルのバックアップ、情報の共有、オンラインでのビデオの視聴、または音楽の聴きたい場合でも、Baidu Cloud Disk はニーズを満たすことができます。しかし、Baidu Netdisk アプリの具体的な使用方法を理解していないユーザーも多いため、このチュートリアルでは Baidu Netdisk アプリの使用方法を詳しく紹介します。まだ混乱しているユーザーは、この記事に従って詳細を学ぶことができます。 Baidu Cloud Network Disk の使用方法: 1. インストール まず、Baidu Cloud ソフトウェアをダウンロードしてインストールするときに、カスタム インストール オプションを選択してください。

Thunder を使用してマグネット リンクをダウンロードする方法 Thunder を使用してマグネット リンクをダウンロードする方法 Feb 25, 2024 pm 12:51 PM

ネットワーク技術の急速な発展により、私たちの生活も大きく便利になりました。その 1 つは、ネットワークを介してさまざまなリソースをダウンロードして共有できることです。リソースをダウンロードする過程で、マグネット リンクは非常に一般的で便利なダウンロード方法になりました。では、Thunder マグネット リンクを使用するにはどうすればよいでしょうか?以下、詳しくご紹介していきます。 Xunlei は、マグネット リンクを含むさまざまなダウンロード方法をサポートする非常に人気のあるダウンロード ツールです。マグネット リンクは、リソースに関する関連情報を取得できるダウンロード アドレスとして理解できます。

See all articles