我正在postgresql中为我当前的项目设计全文搜索功能。 到目前为止,它与ispell / myspell词典一起正常工作。 现在我需要添加对中文,日文和阿拉伯文搜索的支持。 我从哪里开始? 这些语言没有可用的模板或词典 据我所知。 它是否适用于pg_catalog.simple配置?
答案 0 :(得分:3)
来自manual的提示:OpenOffice Wiki上提供了大量字典。
答案 1 :(得分:2)
字典对中文没有太多帮助 - 你需要查看NGRAM令牌......
答案 2 :(得分:1)
stackoverflow.com上链接的类似解决方案是How do I implement full text search in Chinese on PostgreSQL?。
虽然如此,我会根据我的经验和互联网解决方案提供以下详细解决方案。我使用SCWS和zhparser这两种工具作为postgres中文全文搜索的解决方案。
20160131更新:
您必须检查是否已安装postgresql-server-devel- {number version},因为我们将使用pgxs函数在postgresql中创建扩展名。
Step1 :安装SCWS。
值得注意的是 - prefix = / usr / local / scws 跟随 ./configure 。不只是在第4行以下有./configure。
wget http://www.xunsearch.com/scws/down/scws-1.2.2.tar.bz2
tar xvjf scws-1.2.2.tar.bz2
cd scws-1.2.2
./configure --prefix=/usr/local/scws
make
make install
要检查是否已成功安装,请输入以下命令:
ls -al /usr/local/scws/lib/libscws.la
Step2 :安装zhparser
git clone https://github.com/amutu/zhparser.git
cd zhparser
SCWS_HOME=/usr/local/scws/include make && make install
20160131更新:
如果您使用Mac OS X Yosemite,则SCWS_HOME的上限值相同。但是如果您使用Ubuntu 14.04 LTS,请将SCWS_HOME的值更改为/ usr / local / scws 。
Step3 :在Postres中使用zhparser配置新扩展
Step3.1 :通过终端/命令行
psql yourdatabasename
Step3.2 :在Postgres中创建扩展程序。您可以指定所需的字典名称。
CREATE EXTENSION zhparser;
CREATE TEXT SEARCH CONFIGURATION dictionarynameyouwant (PARSER = zhparser);
ALTER TEXT SEARCH CONFIGURATION dictionarynameyouwant ADD MAPPING FOR n,v,a,i,e,l WITH simple;
如果您按照上述步骤操作,您可以使用Postgres全文搜索功能中文/普通话。
使用pg_search gem的Rails中的额外步骤(不是必需的):Step4 。在以下位置配置字典名称:字典属性:app/models/yourmodel.rb
class YourOwnClass < ActiveRecord::Base
...
include PgSearch
pg_search_scope :functionnameyoulike, :against => [columnsyoulike1, columnsyoulike2, ...,etc], :using => { :tsearch => {:dictionary => "dictionary name you just specified in creating a extension in postgres", blah blah blah, ..., etc} }
end
参考:
1. SCWS install tutorial
2. Zhparser@github.com
3. Francs' Post - Postgres full-text search in Chinese with zhparser and SCWS
4. Rails365.net's Post - Postgres full-text search in Chinese with pg_search gem with zhparser
5. My Post at xuite.net - Make Postgres support full text search in Mandarin/Chinese