sphinx-for-chinese在windows下安装与使用方法

sphinx-for-chinese的使用方法将使用 sphinx-for-chinese-2.2.1-dev-r4311-win32 为例子,目前我只找到最新的是这个版本2013.11.09发布。
下载地址:http://sphinxsearchcn.github.io/

下载完后解压出来得到以下文件

将bin目录与及所有文件复制到你喜欢的安装目录,比如D盘或E盘,这里我放到D盘sphinx-for-chinese文件夹(名字任意,你可以取别的英文名)
然后在刚才的sphinx-for-chinese目录下建一个etc文件夹并复制 sphinx.conf.in 到刚才建立的etc目录中,然后将sphinx.conf.in重命名成sphinx.conf。最终我的D盘sphinx-for-chinese目录文件结构如下:

现在将 sphinx-for-chinese 安装成windows服务程序,这样系统启动时会自行运行sphinx-for-chinese。
1.打开Windows的CMD窗体,即命令行提示符窗体(位置:开始菜单 -》 所有程序 -》附件),记得要用管理员身份运行。(在图片上点右键就可以用管理员身份运行)。

在CMD窗口中输入以下字符串,记得你安装的目录和我这不一样是要变的。
D:\sphinx-for-chinese\bin\searchd --install --config D:\sphinx-for-chinese\etc\sphinx.conf --servicename sphinx-cn

--servicenamesphinx-cn 这一段大家看好,--servicename后面可以是你自己想要的英文名称。


删除服务的命令是:D:\sphinx-for-chinese\bin\searchd --delete  --servicename sphinx-cn

2. 现在,来看看刚才的服务有没有安装成功。桌面上 找到 “我的电脑” 或 “计算机” 这个图标,然后在上面右键会弹出一个菜单。点”管理“菜单后就会出现“服务器管理器”界面。

“服务器管理器”界面中,找到并展开“配置”就能看到有一个“服务” 呢,然后点这个服务,在右边就会出现一个大列表。

在右边列表中,看看有没有一个叫 sphinx-cn 名称的服务,如果有,就说明安装是成功的,但不一定代表这个服务在运行。

大家看,没有运行,估计是运行不起来,双击,打开看看,如下图。

我们看到,启动类型是“自动”,但操作状态是:已停止。大家可以点击 “启动“ 按钮,看能不能启动,如果能启动,那就恭喜你,当目前为止我这是不能启动的。需要一些配置才能启动。

先在 sphinx-for-chinese 目录下新建data文件夹和一个log文件夹,一会要用到,名称可以任意(用英文或拼音命名),但后面填写必须和这一样。
在cmd窗体中,输入以下命令,看出现什么信息,从而排除为什么上面的服务启动不了。
D:\sphinx-for-chinese\bin\searchd  --config D:\sphinx-for-chinese\etc\sphinx.conf

上面显示 创建pid文件时找不到文件或目录。接下来要做的是在sphinx.conf文件中查找 @[email protected]/log/searchd.pid  找到后修改成
pid_file        = D:/sphinx-for-chinese/log/searchd.pid
接着再执行刚才的cmd命令,在CMD窗体上按一下键盘向上键,就会自动出现,之前输入的命令。
D:\sphinx-for-chinese\bin\searchd  --config D:\sphinx-for-chinese\etc\sphinx.conf

出现如下提示,和刚才一样,搜索字符串 @[email protected]/log/searchd.log ,然后修改。

l修改前:log            [email protected]@/log/searchd.log
修改后:log            = D:/sphinx-for-chinese/log/searchd.log

修改后保存,然后继续运行刚才的cmd命令,这个过程会很长,直到正常为止。以后直接贴图了,不在说了。


l修改前:query_log        = @[email protected]/log/query.log
修改后:query_log        = D:/sphinx-for-chinese/log/query.log

我们接下来再试一下刚才的cmd命令,会发现提示和以前不一样了,看下面的图。

看起来正常了,但没有索引,这个一会再说,先打开windows 进程管理器,看看searchd.exe进程在不在.

看图中显示,searchd.exe已经运行了,我们强行结束这个进程吧(结束进程就不用我说了吧),改用服务启动试试。

在服务器管理器界面中,找到sphinx-cn并双击这个服务,会弹出一个小窗体,上面有个启动按钮,点击“启动”按钮即可,最终效果如下。

好了,当目前为止,初步安装成功,接下来要打开sphinx.conf并进行一些配置.

打开sphinx.conf 并替换所有 @[email protected]/data/   字符串为 D:/sphinx-for-chinese/data/ 然后保存。

然后,停止刚才 sphinx-cn 服务,再用cmd运行一下
D:\sphinx-for-chinese\bin\searchd  --config D:\sphinx-for-chinese\etc\sphinx.conf
看有没有错误信息。

从图中可以看出,只差没有索引了,在任务管理器中,结束searchd.exe进程,然后对
sphinx.conf进行设置,这里将使用我的数据库表为例,大家可以修改成自己的。

source src1 这里src1可以改名,改名后其它地方用到src1是就得和这个一样
配置数据库信息
type            = mysql
    sql_host        = localhost
    sql_user        = test
    sql_pass        =123456
    sql_db            = www.panshy.com
    sql_port        = 3306    # optional, default is 3306

以下信息,配置文件中没有,就自己加上

找到 sql_query_pre            = SET NAMES utf8 去掉前面的 #号
sql_query_info_pre      = SET NAMES utf8
sql_query_info            = SELECT * FROM www_panshy_com_ecms_pansharticle  WHERE id=$id
\
sql_query                = SELECT id, newstime AS date_added, title, newstext, titleurl, id as msgid, classid, userid,username,username as softtype,username as filesize, 1983  as dbtype  FROM  www_panshy_com_ecms_pansharticle
                                                              #sql_query第一列id需为整数

修改完后,保存,然后在cmd窗体中运行,以下命令进行索引。
D:\sphinx-for-chinese\bin\indexer.exe  --config D:\sphinx-for-chinese\etc\sphinx.conf --all
正常的话是下面这样子

data目录下生成了一些文件,如下图

最后在cmd中运行D:\sphinx-for-chinese\bin\searchd  --config D:\sphinx-for-chinese\etc\sphinx.conf 再次查看效果,正常的图:

到目前为止,sphinx-for-chinese基本安装配置完成。接下来就是集成中文分词啦.
下载xdict_1.1.tar.gz (原文链接中有下载)

解压到 D:\sphinx-for-chinese\etc目录得到一个xdict_1.1.txt文件。


在cmd窗体中,运行以下命令进行转换。
d:\sphinx-for-chinese\bin\mkdict D:\sphinx-for-chinese\etc\xdict_1.1.txt D:\sphinx-for-chinese\etc\xdict

得到一个xdict文件

修改sphinx.conf索引配置文件
查找 charset_type        = sbcs 然后删除掉或注释掉这行
添加以下两项
    charset_type = utf-8
    chinese_dictionary = D:/sphinx-for-chinese/etc/xdict

至此,完成中文支持配置。

以上如果出现index rt错误,请将配置文件中index rt项删除即可。

具体sphinx-for-chinese使用方法与sphinx英文版一样,可以参考sphinx官方网站的用户手册。

原文链接:http://www.panshsoft.net/thread-3-1-1.html

http://www.panshy.com/articles/201608/dev-2752.html

以下引用sphinx-for-chinese官方原文

http://sphinxsearchcn.github.io/

3.一些注意事项sphinx-for-chinese只支持UTF-8编码,数据源输出数据时请做转换,使用MySQL时一般需要添加"SET NMAES utf8"语句。使用xmlpipe时,需要注意两点:一个是XML中尽可能使用CDATA标签,以避免特殊字符影响xml解析;另一个是sphinx配置中启用xmlpipe_fixup_utf8=1选项,以尽可能的避免因非法UTF-8字符串引起解析错误。
若需要检查中文分词支持是否启用,请使用search命令,例子如下:

./search -c ../etc/sphinx.conf 分享身边的精彩
sphinx-for-chinese 2.1.0-dev (r3006)
Copyright (c) 2008-2011, sphinx-search.com

using config file ‘../etc/sphinx.conf‘...
index ‘test1‘: query ‘分享身边的精彩 ‘: returned 0 matches of 0 total in 0.000 sec

words:
1. ‘分享‘: 6 documents, 7 hits
2. ‘身边‘: 26 documents, 38 hits
3. ‘的‘: 5344 documents, 178743 hits
4. ‘精彩‘: 5 documents, 6 hits

可以看到words中列出了各个中文单词,说明中文分词启用成功。

出现乱码时,请检查数据源的编码是否为UTF-8,程序API中的调用是否为UTF-8,若为命令行测试,请检查终端环境是否为UTF-8。windows的命令行环境为GBK,若在windows的命>令行下进行测试,请注意输入数据的编码。

如果数据源不是MySQL,而是oracle、纯文本或者其他数据源,可以采用xmlpipe的方式进行索引。具体方法是采用容易快速开发的语言,如PHP,Python,Ruby或者Lua(C,C++等当然也可以)等读取数据源,然后按照既定格式输出XML格式的数据,供sphinx读取。99.9%的情况下sphinx是可以索引任何数据的,不需要额外的低层处理。

4.中文搜索优化对中文进行全文检索时,一般需要进行中文分词(segmentation)。中文分词的过程,一般叫做tokenize,也就是将一段文本分成多个token,索引的时候对每个token进行倒排索引(inverted index)。中文与拉丁语系不同,例如英文单词之间用空格做区分,而中文没有明显的单词分隔,这就需要算法对中文字符串进行分词,而分词的精确度就会影响中文搜索的效果。举个例子,“研究生命起源”如果分成“研究生”“命”“起源”,用“研究”一词是搜索不到的,用“生命”也搜索不到;如果分成“研究”“生命”“起源”,则用“研究”和“生命”都可以搜索到。同理,如果“上海市”被分成“上海”“市”,用“上海”是搜索不到的。

为了提高搜索效果,一般可以:

提高分词精度。这个一般与分词算法有关,而现在常用的基于词典的分词算法在分词精度上差别不大(不会有数量级的差别)。另外可以对词典进行调整,比如针对医药类网站,可以在词典中添加医药类词库,针对特殊行业领域进行词典优化,也可以提高分词效果。关于词库,一般可以参考搜狗细胞词库。

采用同义词、近义词处理。这一部分主要是针对“餐厅”“餐馆”或者“上海”“上海市”等同义或者近义处理。现在有些针对索引的分词算法采用多分的处理方法,比如将“上海市”分为“上海市”“上海”“市”,这样“上海市”“上海”都可以搜索到,但这样会增加token数量,增加索引数据,影响搜索效率,并且单纯靠算法对多分的处理粒度很难控制;另外还有将同>义词词库整合到全文检索里的做法,这样会增加搜索程序的复杂度,不利于升级和微调。这里建议的做法是将同义词、近义词的处理放到搜索外围,即对用户输入的搜索语句进行处理和转换,利用sphinx的搜索语法进行处理。具体做法,可以整理一份同义词、近义词的词库,利用内存型数据库保存,作成daemon或者web service的接口,对用户的搜索输>入进行预处理,不仅开发成本低,速度快,而且模块化高,容易调整,利于升级。
5.搜索性能优化以及高可用容错集群搭建当索引数据过大或者访问量过大时,可以:

对索引数据进行分区,这一部分与数据库拆表十分类似。即把数据水平或者垂直分区,并在应用程序里做一些调整,不同的搜索请求,分配到不同的索引。这种做法的思路,还是尽可能的减少单个索引数据块(index data block)的大小,进而减少每一次请求所需扫描数据的大小,提高响应时间。

合理的更新策略。根据更新频率,采用main+delta的两层处理或者main+today+delta的三层处理,也可以减少更新负担,提高索引数据的更新速度。这一部分通常需要具体问题具体分析。

采用分布式处理,即将数据水平分区,分布在多台机器上。这一部分可以参考http://sphinxsearch.com/docs/2.0.2/distributed.html

高可用和容错处理。一个是采用replication的处理方法,即一台机器作为master负责索引更新,不接受外部请求,另外多台机器运行sphinx实例,作为slave接受外部请求。master通过inotify和rsync更新slave上的索引数据,外部请求根据算法分配到多个slave上,实现负载均衡和容错处理。同时,还可以利用HAProxy和VRRP实现高可用性和容错集群的>搭建。另外一个方法,是采用sphinx自带的分布式处理方法,并结合heartbeat或者VRRP实现容错处理。

原文地址:https://www.cnblogs.com/cjymuyang/p/9582430.html

时间: 2024-10-08 22:48:31

sphinx-for-chinese在windows下安装与使用方法的相关文章

Windows下安装Openssl的方法

Windows系统下可直接安装Openssl集成工具,省去编译等环节,操作简单,效率高.总体分为三个步骤,即下载安装包.安装并配置环境变量和检测三部分.步骤一:可直接到官网https://slproweb.com/products/Win32OpenSSL.html下载所需安装包,安装包存在多版本,如下图所示.图1步骤二:安装配置环境变量下载了exe或者msi安装文件后,直接安装即可.安装完成后,需将Openssl的bin文件路径配置到系统环境变量中,注意路径前后要加英文符号; ,如图2所示.图

Docker学习系列(一):windows下安装docker

本文目录如下: windows按照docker的基本要求 具体安装步骤 开始使用 安装远程连接工具连接docker 安装中遇到的问题 Docker的更新 Docker中的jupyter windows下使用docker的常用命令 windows下安装docker的方法应该参考docker官网,之前参考的是网上其他人翻译的博客,出了一些问题,后来发现,是由于docker更新速度较快,安装官网的方法最为妥当! 下面引用Docker 中文指南中的几个提示: 提示1:Docker 已经在windows7

Sphinx在windows下安装使用(支持中文全文检索)

前段时间听同事谈起过,公司内部的一个搜索功能用的就是Sphinx,但一直没时间去整一下,今天刚好有点时间,那么就折腾一次吧.一般在linux上比较多,今天就在windows下安装于调试一下吧. 前言: 一.关于Sphinx Sphinx 是一个在GPLv2 下发布的一个全文检索引擎,商业授权(例如, 嵌入到其他程序中)需要联系作者(Sphinxsearch.com)以获得商业授权.一般而言,Sphinx是一个独立的搜索引擎,意图为其他应用提供高速.低空间占用.高结果相关度的全文搜索功能.Sphi

[转] Doxygen + Graphviz windows下安装配置(图解)

查看一些开源代码经常被一些函数的调用关系给绕进去,经过网上查阅资料,发现了这个好用的方法,拿出来和大家分享下安装和应用的过程. 本人常用windows系统,所以主要讲解下windows下相关的内容 要使用doxygen生成漂亮的调用关系图,那就必须安装下图形生成工具graphviz软件,要通过html生成chm文档,那就要用htmlhelp软件了,我想已经说明了三者的关系了,哦,至于doxygen做什么,生成html文档或其他格式的文档软件撒 首先下载三个软件,均下载windows下的安装包,

Doxygen + Graphviz windows下安装配置(图解)

查看一些开源代码经常被一些函数的调用关系给绕进去,经过网上查阅资料,发现了这个好用的方法,拿出来和大家分享下安装和应用的过程. 本人常用windows系统,所以主要讲解下windows下相关的内容 要使用doxygen生成漂亮的调用关系图,那就必须安装下图形生成工具graphviz软件,要通过html生成chm文档,那就要用htmlhelp软件了,我想已经说明了三者的关系了,哦,至于doxygen做什么,生成html文档或其他格式的文档软件撒 首先下载三个软件,均下载windows下的安装包,

Python学习笔记(三)windows下安装theano

早就听说theano很难安装,这一次算是初步尝试,不知道会不会有其它问题. 0 参考材料 (1)win 8.1 64bit 深度学习theano 安装设置 (2)Windows下安装theano成功,但一import就报decode错是什么原因? (3)Wndows8.1 64bit环境下搭建深度学习平台之Theano安装配置 (4)deep learning学习环境Theano安装(win8+win7) 1 简单记录过程 (1)安装anaconda:Download Anaconda now!

windows下安装redis

1.redis简介redis是一个key-value存储系统.和Memcached类似,它支持存 储的value类型相对更多,包括string(字符串).list(链表).set(集合).zset(sorted set --有序集合)和hashs(哈希类型).这些数据类型都支持push/pop.add/remove及取交集并集和差集及更丰富的操作,而且这些操作都 是原子性的.在此基础上,redis支持各种不同方式的排序.与memcached一样,为了保证效率,数据都是缓存在内存中.区别的是red

在 Windows 下安装 GruntJS

在你安装 Grunt.js 之前你需要先安装 Node.js.对于本教程而言,我已经安装好了 node.js v0.10.0. 我将要安装 Grunt.js v0.4.1.警告:如果你已经安装了 Grunt.js 0.3.x 或者更低的版本,请先卸载它. Grunt 的命令行界面 为了安装 grunt.js,我们需要要安装好全局的 Grunt 命令行界面(CLI),当前的 CLI 版本是 1.0.6.打开 Windows 命令窗口(CMD)并输入以下指令: npm install grunt-c

在windows下安装OpenDaylight的Helium(氦)版本

前言 OpenDaylight(以下简写为ODL)的Helium(氦)版本已经成为相对稳定的版本(相对于Li版本).Helium(氦)版本下载链接地址为http://www.opendaylight.org/software/downloads/helium.官网中分别共享了版本.安装向导.用户向导.开发者向导手册,可进行下载学习.在本篇文章中,着重讲一下在Windows下的安装过程. 1 Helium安装 虽然官方要求ODL Helium(氦)版本是基于Ubuntu的,但是在实际学习过程中,U