sphinx中文版Coreseek普通话搜索引擎安装和应用办法(Windows)

  **图片 1**

  今日闲下来研究了MYSQL的目录优化,继而领悟了MYSQL的全文字笔迹检验索,在大数据量下一旦您采用like去追寻数据库的新闻的兑现全文字笔迹检验索,那么恭喜您你会暴库。。

  全文字笔迹检验索引擎中Sphinx是比较雅观的,然则对中文帮忙不是无独有偶,所以就有了Coreseek,焦点是Sphinx引擎,不过对中文查找有了很好的支撑,而且有很全的中文文书档案,开源免费试用,支持Windows、Linunx甚至是Mac。

  Coreseek介绍

   Coreseek
周到协理: FreeBSD6/7/8,Mac OS X
10.6,帕杰罗HEL五 、CentOS-伍 、Fedora-12/1③ 、gentoo-十 、openSUSE-10/1一 、slackware-13.0/13.① 、debian-⑤ 、ubuntu-9/十 、archlinux-二零零六,WindowsXP、Windows200叁 、Windows⑦ 、Windows
Server
2010等,32与陆拾陆人操作系统均可采用,可支撑MySQL、玛丽亚DB、PostgreSQL、SQL
Server、Oracle等各种数据库系统,并提供Python万能数据源以支持任意来源的数目。

  常用的文书和目录

style=”color: #008000; font-size: 16px;”>  Coreseek/

  /api/

                 sphinxapi.php       #本着PHP的api,实际上是一个类

              /bin/

                      indexer.exe           #创制目录的下令

                      searchd.exe          #监听端口,开启服务的指令

         search.exe            #执行搜索命令    

         mmseg.exe          #词库相关命令

              /etc/

                      *.conf                   #配置文件

         unigram.txt          #词库文件txt

         thesaurus.txt       #同义词词库文件 txt

                         uni.lib                 
#创建索引用到的词库文件,由mmseg命令加工 
                                # unigram.txt文件形成

              /var/

                       /data/                #目录存放地点

 

  Coreseek安装

  以下是介绍在windows下测试环境的装置(不提议把coreseek正式安顿在windows),首先去官方网站下载稳定版本的安装包(3.2本子),下载后解压缩到贰个文书夹,如解压缩到C盘:路径为 C:\coreseek-3.2.14-win32,以下为设置coreseek
windows版本记录

  1. 安装searchd服务

  cd c:/
  C:\coreseek-3.2.14-win32\bin\searchd.exe --install --config C:\coreseek-3.2.14-win32\csft.conf --servicename coreseekd 

  注意: 命令一定要是绝对路径,不能使用PATH变量或短路径
     你需要先配置csft.conf文件,笔者测试的MYSQL,详见第二条 

 

  Coreseek/Sphinx有几个指令调用命令 searchd,search,indexer,spelldump,indextool,以下为摘录于官方文书档案:

1.  indexer一声令下参考

indexer 是Sphinx的三个根本工具之一。不管是从命令行直接调用,依然作为二个较大的台本的一有的应用,indexer都只负责一件事情——收集要被搜寻的数据。

indexer的调用语法基本上是那样:

indexer [OPTIONS] [indexname1 [indexname2 [...]]]

用户能够在sphinx.conf中安装好或许有怎么样索引(index)(这几个索引能够在晚些时候别搜索),因而在调用indexer的时候,最简便的气象下,只需求告诉它你要简历哪个(可能哪些)索引就行了。

假设 sphinx.conf 包罗了多个目录的现实设置, mybigindex 和 mysmallindex,
,你能够这么调用:

$ indexer mybigindex
$ indexer mysmallindex mybigindex

在配置文件sphinx.conf其间,用户能够为她们的数额钦命八个或七个目录。然后调用indexer来对里面三个特定的目录实行双重编排索引操作,大概是重复编辑全数索引——不制止某3个或同时整个,用户总是能够钦命现有索引的一个结缘。

indexer的多数增选都得以在布局文件中付出,但是有局地挑选还亟需在命令行上点名,那个选取影响编制索引这一操作是怎样进展的。那几个选取列举如下:

  • --config <file> (简写为-c <file>)
    使 indexer 将点名的文本file作为配置文件。
    平日,indexer是会在安装目录(例如e.g. /usr/local/sphinx/etc/sphinx.conf,借使sphinx被安装在/usr/local/sphinx)中寻找sphinx.conf,若找不到,则持续在用户在shell中调用indexer时所在的目录中寻觅。
    这么些选项一般在共享sphinx安装的情事下利用,比如二进制文件安装在/usr/local/sphinx,而不一致用户都有权定制自个儿的sphinx设置。也许在同一个服务器上运转多个实例的动静下利用。在上述两中状态中,用户能够制造和谐的sphinx.conf文本,然后把它做为参数字传送给indexer。例如:

    $ indexer --config /home/myuser/sphinx.conf myindex
    
  • --all 使indexersphinx.conf文本中列出的装有索引实行重复编写索引,那样就不比一遍列出各样索引的名字了。这一个选项在陈设文件较小的场地下,或然在类似基于cron的掩护理工科人作中很有用。在上述意况中,整个索引集天天或每一周或别的什么适合的年华间隔中就再度创建贰次。用法示例:

    $ indexer --config /home/myuser/sphinx.conf --all
    
  • --rotate 用于轮换索引。对新的文书档案建立目录时大约肯定都保证搜索服务依然可用,除非你有信念在检索服务结束同时不给您的用户带来麻烦。--rotate创立多个外加的目录,并列于原有索引(与原有索引在一如既往目录,简单地在原来索引文件名基础上加一个.new后缀)。一旦那一个额外的目录建立达成,indexersearchd发一个SIGHUP信号做为通告。searchd会尝试将引得重新命名(给原来索引加上.old后缀,而把带有.new后缀的新索引改为原名,以达替换之目标),继而用新的文件重启服务。依 seamless_rotate 选项设定之差异,在新索引可用在此以前恐怕有一点小的延迟。用法示例:

    $ indexer --rotate --all
    
  • --quiet 使indexer不出口除错误(error)外的别的东西。这几个选项依旧拽可用在cron定时职责的情境下也许脚本中,那些情形下抢先50%出口是无所谓或完全没用的,除非是发出了一些体系的失实。用法示例:

    $ indexer --rotate --all --quiet
    
  • --noprogress 不随时显示速度音讯,而是仅在目录结束时告知最后的意况细节(例如为如何文书档案建立了目录,建立目录的进程等)。当脚本没有运维在四个控制台(console,或“tty”)时,这么些选项是默许的。用法示例:

    $ indexer --rotate --all --noprogress
    
  • --buildstops <outputfile.text> <N> 像建立目录一样扫描索引对应的数据源,爆发一个最后会被投入索引的词项的列表。换种说法,发生贰个用这一个目录能够查找的词项的列表。注意,这么些选项使indexer并不真正更新钦赐的目录,而只是“假装”建在立索引似地拍卖3遍数据,蕴涵运行sql_query_pre或者sql_query_post挑选钦定的查询。outputfile.txt文本最终会蕴藏一个词表,每行贰个词,按词频排序,高频在前。参数N钦赐了列表中最多可出现的词项数据,纵然N英镑引中全体词项的数额还大,则赶回的词项数正是整个词项数。客户端应用程序利用这种字典式的词表来提供“您是要寻找。。。吗?(Did
    you
    mean…)”的效果,经常那几个选项与下部要讲的--buildfreqs选料一同使用。示例:

    $ indexer myindex --buildstops word_freq.txt 1000
    

    那条命令在当前目录发生三个word_freq.txt文件,内含myindex这些目录中最常用的壹仟个词,且最常用的排在最前面。注意,当钦点了八个索引名或利用了--all选料(约等于列出布局文件中的全体索引名)时,那个选项对内部的尾声二个索引起成效。

  • --buildfreqs 与 --buildstops联手使用
    (借使没有点名 --buildstops 则--buildfreqs也被忽略).
    它给--buildstops发出的词表的每项扩张一个计数消息,即该词在目录中国共产党出现了不怎么次,那在建立停用词(stop
    words,出现尤其普遍的词)表时大概有用。在付出“您是要摸索。。。吗?(Did
    you
    mean…)”的效益时那几个选项也能帮上忙,因为有了它你就能了然1个词比另一个好像的词出现得更频仍的程度。示例:

    $ indexer myindex --buildstops word_freq.txt 1000 --buildfreqs
    

    这些命令将发出一个好像于上一条命令的word_freq.txt ,但差异在于,各样词的背后都会附加二个数字,指明在钦点的目录中这么些词出现了不怎么次。

  • --merge <dst-index> <src-index> 用于在情理中校七个目录合并,比方说你在使用“主索引+增量索引”格局,主索引很少改变,但增量索引很频仍地重建,而--merge慎选允许将那五个索引合二为一。操作是从右向左实行的,即先观望src-index的始末,然后在大体中校之与dst-index合并,最终结果留在dst-index里。用伪代码说正是dst-index += src-index。示例:

    $ indexer --merge main delta --rotate
    

    上例中main是主索引,很少更动,delta是增量索引,频仍更新。上述命令调用indexer将delta的剧情统一到main里面还要对索引举行轮换。

  • --merge-dst-range <attr> <min> <max> 在联合索引的时候运维范围过滤。具体地说,向指标索引
    (是 --merge 的贰个参数,尽管没有点名 --merge
    --merge-dst-range 也被忽视)合并时,indexer会对即将合并进去的文书档案做1次过滤,只有通过过滤才能最后出现在对象索引中。举二个实用的例证,借使有个别索引有贰个“已删除(deleted)”属性,0代表“尚未删除”。那样一个索引能够用如下命令进行联合:

    $ indexer --merge main delta --merge-dst-range deleted 0 0
    

    如此标记为已去除的文书档案(值为1)就不会出现在新变化的目的索引中了。这几个选项能够在命令行上钦赐数十一遍,以便钦点八个相继的过滤,这样一个文书档案要想合并到终极的目的索引中去,就务须逐一通过总体这个过滤。

2.  searchd命令参考

searchd 也是sphinx的四个重庆大学工具之一。 searchd是系统实际处理搜索的零部件,运转时它表现得就好像一种服务,他与客户端应用程序调用的繁多的API通信,负责接受询问、处理查询和重回数据集。

不同于 indexersearchd 并不是统一筹划用来在命令行或然一般的台本中调用的,
相反,它还是做为一个医生和医护人员程序(daemon)被init.d调用(在Unix/Linux类系统上),可能做为一种服务(在Windows类系统上),由此并不是装有的指令行选项都连续实惠,那与创设时的取舍有关。

调用 searchd 就像这么不难:

$ searchd [OPTIONS]

不管 searchd 是如何营造的,下列选项总是可用:

  • --help (可以简写为 -h )
    列出能够在你眼下的 searchd 营造上调用的参数。
  • --config <file> (可简写为 -c <file>)
    使 searchd 使用钦命的配备文件,与上述indexer--config开关相同。
  • --stop 用来停掉 searchd,使用sphinx.conf中所内定的PID文件,因而你也许还索要用--config选料来确认searchd应用哪个配置文件。值得注意的是,调用 --stop 会确认保障用 UpdateAttributes() 对索引实行的更动会反应到实在的目录文件中去。示例:

    $ searchd --config /home/myuser/sphinx.conf --stop
    
  • --status 用来询问运营中的searchd实例的图景,,使用钦点的(也足以不点名,使用默许)配置文件中描述的延续参数。它通过配备好的第八个UNIX套接字或TCP端口与运作中的实例连接。一旦一连成功,它就询问一层层情景和属性计数器的值并把这一个数据打字与印刷出来。在应用程序中,可以用Status() API调用来走访同一的这么些计数器。示例:

    $ searchd --status
    $ searchd --config /home/myuser/sphinx.conf --status
    
  • --pidfile 用来显式内定一个PID文件。PID文件存款和储蓄着有关searchd的长河音讯,那些信息用于进度间通讯(例如indexer亟待通晓那些PID以便在轮换索引的时候与searchd实行广播发表)searchd在常规形式运转时会使用三个PID(即不是选拔–console选项运维的),但有只怕存在searchd在控制台(--console)方式运营,而还要正在索引正在进行更新和更替操作的情况,此时就需求3个PID文件。

    $ searchd --config /home/myuser/sphinx.conf --pidfile /home/myuser/sphinx.pid
    
  • --console 用来强制searchd以控制台形式运维;典型气象下searchd像三个守旧的服务器应用程序那样运维,它把音讯输出到(sphinx.conf铺排文件中钦赐的)日志文件中。但有点时候须要调剂配置文件或许守护程序本人的难题,只怕诊断一些很难跟踪的题材,那时强制它把音讯一直出口到调用他的控制台可能命令行上会使调节和测试工作不难些。同时,以控制台情势运作还表示进程不会fork(因而搜索操作都是串行执行的),也不会写日记文件。(要尤其注意,searchd并不是被重点设计用来在控制台情势运维的)。能够那样调用searchd

    $ searchd --config /home/myuser/sphinx.conf --console
    
  • --iostats 当使用日志时(必须在sphinx.conf中启用query_log选项)启用--iostats会对每条查询输出关于查询进程中发出的输入输出操作的详细新闻,会带来一线的性质代价,并且深入人心会导致更大的日志文件。更加多细节请参考 query
    log
    format
     一节。能够这么起步searchd

    $ searchd --config /home/myuser/sphinx.conf --iostats
    
  • --cpustats 使实际CPU时间告诉(不光是实际衡量时间(wall
    time))出现在查询日志文件(每条查询输出叁回)和景色报告(累加事后)中。那一个选项正视clock_gettime()系统调用,由此恐怕在少数系统上不可用。能够这么起步searchd

    $ searchd --config /home/myuser/sphinx.conf --cpustats
    
  • --port portnumber (可简写为 -p)
    指定searchd监听的端口,常常用于调节和测试。这几个选项的暗中认可值是9312,但有时用户供给它运转在其余端口上。在那些命令行选项中钦点端口比配置文件中做的别样设置优先级都高。有效的端口范围是0到65535,但要使用低于1024的端口号恐怕须求权限较高的账户。使用示例:

    $ searchd --port 9313
    
  • --index <index> 强制searchd只提供针对性内定索引的探寻服务。跟上边的--port如出一辙,那首倘若用来调节和测试,假若是长时间接选举用,则应该写在配置文件中。使用示例:

    $ searchd --index myindex
    

searchd在Windows平台上有一些有意识的选项,与它做为windows服务所产生的附加处理有关,这几个选用只存在于Windows二进制版本。

注意,在Windows上searchd默认以--console情势运作,除非用户将它安装成贰个劳动。

  • --install 将searchd设置成1个微软管控台(Microsoft
    Management Console, 控制面板 / 管理工科具 /
    服务)中的服务。就算一条命令钦点了--install,那么与此同时使用的别的具有选项,都会被保存下来,服务安装好后,每回运营都会调用那几个命令。例如,调用searchd时,大家很恐怕希望用--config点名要动用的配备文件,那么在使用--install的同时也要加盟这些选项。一旦调用了这些选项,用户就足以在控制面板中的管控毕尔巴鄂对searchd举办运转、截止等操作,由此总体能够起始、甘休和重启服务的方法对searchd也都使得。示例:

    C:\WINDOWS\system32> C:\Sphinx\bin\searchd.exe --install
       --config C:\Sphinx\sphinx.conf
    

    假若每一回运营searchd你都盼望取得I/O
    stat讯息,这就应该把这么些选项也用在调用--install的授命行里:

    C:\WINDOWS\system32> C:\Sphinx\bin\searchd.exe --install
       --config C:\Sphinx\sphinx.conf --iostats
    
  • --delete 在微软保管理控制制台(Microsoft Management
    Console)和其余服务注册的地方删除searchd,当然此前要已经由此--install安装过searchd劳动。注意,那么些选项既不删除软件本身,也不删除任何索引文件。调用那个选项之后只是使软件提供的劳动不可能从windows的服务系统中调用,也不可能在机械重启后自行运转了。要是调用时searchd正在做为服务运维中,那么现有的示范并不会被终结(一向会运作到机械重启或调用--stop)。借使服务安装时(用--servicename)内定了自定义的名字,那在调用此选项卸载服务时里也供给用--servicename点名相同的名字。示例:

    C:\WINDOWS\system32> C:\Sphinx\bin\searchd.exe --delete
    
  • --servicename <name> 在设置或卸载服务时钦命服务的名字,那么些名字会冒出在治本控制布里斯托。有三个默许的名字searchd,但若安装服务的种类只怕有两个管理员登录,或同时运行多个searchd实例,那么起2个描述性强的名字将是个好好主意。注意,唯有在与--install或者--delete还要选用的时候--servicename才有效,否则这几个选项什么都不做。示例:

    C:\WINDOWS\system32> C:\Sphinx\bin\searchd.exe --install
       --config C:\Sphinx\sphinx.conf --servicename SphinxSearch
    
  • --ntservice 在Windows平台,管控台将searchd做为服务调用时将以此选项传递给它。常常没有供给直接调用那一个开关,它是为Windows系统准备的,当服务运维时,系统把这么些参数字传送递给searchd。但是理论上,你也能够用这一个开关从命令行将searchd开发银行成一般劳动形式(与--console意味着的控制台情势相对)

末了但不要最不首要的,类似别的的守护进度(daemon),searchd三种信号。

SIGTERM
进展二回平滑的重启。新的央浼不会被接受;可是已经开端的呼吁不会被严酷中断。

SIGHUP
起步索引轮询。取决于 seamless_rotate 的安装,新的伸手可能会在长时间内陷入停顿;客户端将接纳到权且错误。

SIGUSR1
强制重新打开searchd日志和询问日志,使得日志轮询能够举办。

3.  search指令参考

search是Sphinx中的一个协理理工科程师具。searchd顶住服务器类环境中的搜索,而search注意于在命令行上对索引进行飞快测试,而不要求构建1个扑朔迷离的架构来拍卖到劳动器端的连天和处理服务器再次回到的响应。

注意:search并不是布置性用来做为客户端应用程序的一部分。大家强烈提议用户毫无针对search编排接口,相反,应该针对searchd。Sphinx提供的其余客户端API也都不支持那种用法。(任哪天候search一而再每趟都再度调入索引,而searchd会把索引缓冲在内部存款和储蓄器中以利质量)。

澄清了这么些我们就足以接二连三了。很多种经营过API构造的查询也能够用search来成功,然则对于万分复杂的询问,大概照旧用个小本子和呼应的API调用来促成相比不难。除此之外,只怕有个别新的特征先在searchd系统中贯彻了而并未引入到search中。

search 的调用语法如下:

search [OPTIONS] word1 [word2 [word3 [...]]]

调用search并不必要searchd正在运转,只需运维search的账户对配置文件和目录文件及其所在路径有读权限即可。

暗许行为是对在布局文件中装置的全体索引的整个字段搜索word1(AND word2
AND
word3….)。倘若用API调用来创设那一个搜索,那一定于向SetMatchMode传送参数SPH_MATCH_ALL,然后在调用Query的时候钦赐要询问的目录是*

search有诸多选项。首先是通用的选项:

  • --config <file> (可简写为 -c <file> )
    使search运用钦点的计划文件,那与上述indexer的照应选项相同。
  • --index <index> (可简写为 -i <index> )
    使search仅搜索钦定的目录。经常它会尝试寻找sphinx.conf中列出的上上下下物理索引,不包含分布式索引。
  • --stdin 使search收受规范输入(STDIN)上传出的查询,而不是命令行上提交的询问。有时你要用脚本通过管道给search传入查询,这多亏以此选项的用武之地。

安装匹配形式的选项:

  • --any (可简写为 -a) 更改匹配形式,匹配钦命的即兴3个词(word1
    O路虎极光 word2 O哈弗word3),那对应API调用中向SetMatchMode传递参数SPH_MATCH_ANY
  • --phrase (可简写为 -p )
    更改匹配方式,将点名的凡事词做为二个词组(不包罗标点符号)构成查询,那对应API调用中向SetMatchMode传送参数SPH_MATCH_PHRASE
  • --boolean (可简写为-b ) 将格外格局设为 Boolean
    matching
    。注意假如在命令行上利用布尔语法,或然须要对少数符号(用反斜线“\”)加以转义,以制止外壳程序(shell)或命令行处理器对这几个标记做特殊理解,例如,在Unix/Linux系统上必须转义“&”以防患search被fork成三个后台进度,尽管这一个难点也足以像下文一样通过行使--stdin选料来缓解。这几个选项对应API调用中向SetMatchMode传送参数SPH_MATCH_BOOLEAN
  • --ext (可简写为 -e ) 将13分方式设为Extended
    matching
    。那对应与API调用中向SetMatchMode传送参数SPH_MATCH_EXTENDED。要留意的是因为已经有了更好的扩大匹配形式版本2,所以并不鼓励施用那一个选项,见下一条表达。
  • --ext2 (可简写为 -e2 ) 将匹配形式设为 Extended matching,
    version
    2
    。那么些选项对应在API调用中向SetMatchMode传送参数SPH_MATCH_EXTENDED2。要留意那几个选项比较老的扩充匹配格局更实用也提供更加多的风味,因此推荐使用这几个新版的选项。
  • --filter <attr> <v> (可简写为 -f <attr> <v> )
    对结果举办过滤,唯有钦定的性质attr匹配钦赐的值v时才能因而过滤。例如--filter deleted 0 只匹配那个有deleted属性,并且其值是0的文书档案。也能够在命令行上多次交给--filter以便钦赐多重过滤,但是只要重复定义针对同二个属性的过滤器,那么第①遍钦定的过滤条件会覆盖第3遍的。

用于拍卖搜索结果的选项:

  • --limit <count> (可简写为 -l count )
    限制重临的最多匹配结果数。倘诺钦赐了分组(group)选项,则意味的是回到的最多匹配组数。私下认可值是二十一个结果(与API相同)
  • --offset <count> (可简写为 -o <count> )
    从第count个结实开第3次到,用于给寻找结果分页。假诺想要每页十8个结实,那么第壹页就从偏移量20初阶,第②页从偏移量40初叶,以此类推。
  • --group <attr> (可简写为-g <attr> )
    搜索结果依据钦命的质量attr进行分组。类似SQL中的GROUP
    BY子句,那会将attr属性值一致的结果结合在联合,再次来到的结果集中的每条都是一组中最好的那条结果。假设没有尤其钦点,那“最好”指的是相关度最大的。
  • --groupsort <expr> (可简写为 -gs <expr> )
    尽搜索结果根据-group分组后,再用表明式<expr>的值决定分组的相继。注意,那些选项钦定的不是各组内部哪条结果是最好的,而是分组本身再次回到的各类。
  • --sortby <clause> (可简写为 -s <clause> )
    钦点结果依照<clause>中钦赐的逐一排序。那使用户能够控制搜索结果显示时的各种,即依照分裂的列排序。例如,--sortby "@weight DESC entrytime DESC" 的趣味是将结果首先按权值(相关度)排序,如若有两条或上述结果的相关度相同,则他们的各种由岁月值entrytime决定,时间以来(值最大)的排在前面。平日须要将那几个项目坐落引号里(--sortby "@weight DESC")只怕用逗号隔离(--sortby @weight,DESC),避防止它们被分手处理。此外,与普通的排序情势相同,假使钦赐了--group(分组),那几个选项就影响分组内部的结果什么排序。
  • --sortexpr expr (可简写为 -S expr )
    搜索结果表现的相继由钦命的算术表达式expr决定。例如: --sortexpr "@weight + ( user_karma + ln(pageviews) )*0.1"(再度提醒,要用引号来幸免shell对星号*做特别处理)。扩张排序格局在Sorting
    modes
     一章下的SPH_SORT_EXTENDED条目下实际讨论。
  • --sort=date 搜索结果按日期升序(日期较久远的在前)排列。须求索引中有2特性质被钦赐为时间戳。须求索引中有叁个性子被钦定为时间戳。
  • --rsort=date specifies that the results should be sorted by
    ascending (i.e. oldest first) date. This requires that there is an
    attribute in the index that is set as a timestamp.
  • --sort=ts 搜索结果按时间戳分成组。先再次回到时间戳在不久前一钟头内的那组结果,在组内部按相关度排序。其后赶回时间戳为多年来一天之内的结果,也按相关度排序。再之后是近来六日的,最终是近年三个月的。在Sorting
    modes
     一章的SPH_SORT_TIME_SEGMENTS 条目下对此有更详细的议论。

此外选用:

  • --noinfo (可简写为-q )
    search不在SQL数据库中查询文书档案新闻(Document
    Info)。具体地说,为了调节和测试search和MySQL共同选用时出现的题材,你能够在利用这几个选项的还要提供一个依照文书档案ID搜索整个小说全文的询问。细节可参看sql_query_info指令。

4.  spelldump命令参考

spelldump 是Sphinx的二个推抢程序。

用于从ispell或者MySpell格式的字典文件中可用来支持建立词形列表(wordforms)的始末——词的任何只怕变动都预先构造好。

诚如用法如下:

spelldump [options] <dictionary> <affix> [result] [locale-name]

多少个首要参数是词典的主文件([language-prefix].dict)和词缀文件([language-prefix].aff);平日那三种文件被取名为[语言简写].dict和[语言简写].aff,大部分常见的Linux发行版中都有那么些文件,网上也无处找得到。

[result] 钦点的是字典数据的输出地点,而[locale-name]钦定了具体运用的区域设置(locale)

再有二个-c [file]分选,用来钦定3个暗含大小写转换方面细节的公文。

用法示例:

spelldump en.dict en.aff
spelldump ru.dict ru.aff ru.txt ru_RU.CP1251
spelldump ru.dict ru.aff ru.txt .1251

结果文件会含有字典中带有的整整词,字典序排列,wordforms文件格式。能够依据实际的利用环境定制这几个文件。结果文件的贰个例子:

zone > zone
zoned > zoned
zoning > zoning

5.  indextool指令参考

indextool 是版本0.9.9-rc2中引入的支持理工科程师具。用于出口关于物理索引的有余调节和测试消息。(未来还陈设出席索引验证等职能,因而起名较indextool而不是indexdump)。
基本用法如下:

indextool <command> [options]

唯一一个富有命令都有些选用是--config,用于钦赐安插文件:

  • --config <file> (可简写为 -c <file> ) 覆盖暗中认可的计划文件名。

其余可用的命令如下:

  • --dumpheader FILENAME.sph 在安排任何其它索引文件甚至配置文件的前提下,飞快输出索引头文件的剧情,包涵索引的整套设置,特别是完整的属性列表、字段列表。在本子0.9.9-rc2从前,这么些命令是由search工具提供的。
  • --dumpheader INDEXNAME 输出给定索引名的索引头内容,索引头文件的门径是在布置文件中查得的。
  • --dumpdocids INDEXNAME 输出给定索引名涉及的文书档案ID。数据是从属性文件(.spa)中抽取的,因而须求doc_info=extern平常办事。
  • --dumphitlist INDEXNAME KEYWORD 输出钦定关键字KEYWOEscortD在实施索引中的的整个并发。

 

2. 配置csft.conf文件

#MySQL数据源配置,详情请查看:http://www.coreseek.cn/products-install/mysql/
#请先将var/test/documents.sql导入数据库,并配置好以下的MySQL用户密码数据库

#源定义
source mysql
{
    type                    = mysql

    sql_host                = localhost
    sql_user                = root
    sql_pass                = 123456
    sql_db                  = test
    sql_port                = 3306
    sql_query_pre           = SET NAMES utf8 #预查询

    sql_query               = SELECT id, group_id,author_id, UNIX_TIMESTAMP(date_added) AS date_added, title, content FROM documents
                                                              #主查询-查询的数据将被索引sql_query第一列id需为整数
    sql_attr_uint           = author_id                                                          #title、content作为字符串/文本字段,被全文索引
    sql_attr_uint           = group_id           #从SQL读取到的值必须为整数
    sql_attr_timestamp      = date_added #从SQL读取到的值必须为整数,作为时间属性

    sql_query_info_pre      = SET NAMES utf8                                        #命令行查询时,设置正确的字符集
    sql_query_info          = SELECT * FROM documents WHERE id=$id #命令行查询时,从数据库读取原始数据信息

    #区段查询 每次查询一段数据来建立索引
    #sql_query_range = SELECT MIN(id),MAX(id) FROM documents
    #sql_range_step  = 1000
    #sql_query = SELECT * FROM documents WHERE id>=$start AND id<=$end    
}

#index定义
index mysql
{
    source            = mysql             #对应的source名称
    path            = C:/coreseek-3.2.14-win32/var/data/mysql/ #请修改为实际使用的绝对路径,例如:/usr/local/coreseek/var/...
    docinfo            = extern
    mlock            = 0
    morphology        = none
    min_word_len        = 1
    html_strip                = 0

    #中文分词配置,详情请查看:http://www.coreseek.cn/products-install/coreseek_mmseg/
    #charset_dictpath = /usr/local/mmseg3/etc/ #BSD、Linux环境下设置,/符号结尾
    charset_dictpath = C:/coreseek-3.2.14-win32/etc/                             #Windows环境下设置,/符号结尾,最好给出绝对路径,例如:C:/usr/local/coreseek/etc/...
    charset_type        = zh_cn.utf-8
}

#全局index定义
indexer
{
    mem_limit            = 128M
}

#searchd服务定义
searchd
{
    listen                  =   9312
    read_timeout        = 5
    max_children        = 30
    max_matches            = 1000
    seamless_rotate        = 0
    preopen_indexes        = 0
    unlink_old            = 1
    pid_file = C:/coreseek-3.2.14-win32/var/log/searchd_mysql.pid  #请修改为实际使用的绝对路径,例如:/usr/local/coreseek/var/...
    log = C:/coreseek-3.2.14-win32/var/log/searchd_mysql.log        #请修改为实际使用的绝对路径,例如:/usr/local/coreseek/var/...
    query_log = C:/coreseek-3.2.14-win32/var/log/query_mysql.log #请修改为实际使用的绝对路径,例如:/usr/local/coreseek/var/...
}

 

 详细官方文书档案:http://www.coreseek.cn/products-install/mysql/

  生成索引

  将MYSQL数据源中的数据查询到sphinx中,再依据陈设文件csft.conf配置的索引index进行索引生成,索引一般分为主索引、增量索引和实时索引。一般20W条的MYSQL数据行生成索引的年月为2分钟左右(indexer命令详见以上)

C:\coreseek-3.2.14-win32\bin\indexer -c C:\coreseek-3.2.14-win32\csft.conf --all

 

 

 选择API进行测试

 

 

  将api/sphinxapi.php包涵到PHP文件中就足以应用API程序调用coreseek了,1000W的多少行中,使用API调用全文检索再次回到的年月<500ms,使用接口的有关参数比如能够控制搜索再次回到行数、分组排序、限制条件等,从sphinx返回ids(MYSQL数据库表中的主键),依据ids能够到MYSQL中找寻到须要的数码。

图片 2

  一段PHP的测试代码

 

include 'sphinxapi.php';
$sp = new SphinxClient;
$sp->SetServer('127.0.0.1', 9314);
$sp->SetConnectTimeout(5);

$sp->SetLimits(0, 10);//($start, $limit);

$keyword=(isset($_GET['kw'])&& !empty($_GET['kw'])) ?trim($_GET['kw']) : '搜索内容';

//在执行搜索之前,可以加入各种条件
$result=$sp>Query($keyword,'iiyicms');//'*‘   'iiyicms:iiyicms_increment'

 

 

 

网站地图xml地图