PHPsphinx普通话版Coreseek普通话找寻引擎安装和使用办法(Windows)

  **PHP 1**

  明天闲下来研商了MYSQL的目录优化,继而明白了MYSQL的全文字笔迹查证索,在大数据量下一旦您利用like去追寻数据库的音信的落成全文字笔迹查证索,那么恭喜你你会暴库。。

  全文字笔迹核算索引擎中Sphinx是相比较理想的,不过对普通话帮助不是累累,所以就有了Coreseek,大旨是Sphinx引擎,可是对汉语查找有了很好的支撑,而且有很全的国语文书档案,开源无需付费试用,援助Windows、Linunx甚至是Mac。

  Coreseek介绍

   Coreseek
全面扶助: FreeBSD6/7/八,Mac OS X
10.六,本田UR-VHEL五、CentOS-5、Fedora-12/一3、gentoo-拾、openSUSE-十/11、slackware-壹3.0/13.①、debian-5、ubuntu-9/10、archlinux-20拾,WindowsXP、Windows200三、Windows7、Windows
Server
二零一零等,3二与63人操作系统均可采用,可支撑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.二.1四-win3二,以下为设置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的八个首要工具之一。不管是从命令行间接调用,依然作为贰个比较大的本子的1局地行使,indexer都只负责1件事情——搜聚要被搜寻的数目。

indexer的调用语法基本上是这么:

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

用户能够在sphinx.conf中安装好或然有啥样索引(index)(那几个索引能够在晚些时候别找出),由此在调用indexer的时候,最简便易行的景观下,只必要报告它你要简历哪个(或然怎么着)索引就行了。

假设 sphinx.conf 包蕴了八个目录的具体设置, mybigindex 和 mysmallindex,
,你能够那样调用:

$ indexer mybigindex
$ indexer mysmallindex mybigindex

在安顿文件sphinx.conf其间,用户可以为她们的数码钦命一个或八个目录。然后调用indexer来对里面1个特定的目录实行重复编辑索引操作,恐怕是再一次编写全部索引——不限于某三个或同时全数,用户总是可以钦点现存索引的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时所在的目录中检索。
    那几个选项1般在共享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后缀)。1旦那些附加的目录建立完结,indexersearchd发3个SIGHUP时限信号做为布告。searchd会尝试将引得重新命名(给本来索引加上.old后缀,而把带有.new后缀的新索引改为原名,以达替换之目标),继而用新的文件重启服务。依 seamless_rotate 选项设定之分化,在新索引可用在此之前大概有一点小的推迟。用法示例:

    $ indexer --rotate --all
    
  • --quiet 使indexer不出口除错误(error)外的别的东西。那个选项依然拽可用在cron定期职务的地步下或然脚本中,那几个景况下大多数出口是无所谓或完全没用的,除非是发生了一些项目的失实。用法示例:

    $ indexer --rotate --all --quiet
    
  • --noprogress 不随时突显速度音讯,而是仅在目录甘休时报告最终的情形细节(例如为怎么文书档案建立了目录,建立目录的快慢等)。当脚本未有运营在2个调控台(console,或“tty”)时,这一个选项是暗中认可的。用法示例:

    $ indexer --rotate --all --noprogress
    
  • --buildstops <outputfile.text> <N> 像建立目录同样扫描索引对应的数据源,产生多个聊起底会被插手索引的词项的列表。换种说法,发生二个用这一个目录能够查找的词项的列表。注意,这几个选项使indexer并不确实更新钦点的目录,而只是“假装”建在立索引似地拍卖3遍数据,包罗运行sql_query_pre或者sql_query_post接纳钦命的查询。outputfile.txt文本最终会含有2个词表,每行二个词,按词频排序,高频在前。参数N钦点了列表中最多可出现的词项数据,倘若N美元引中全体词项的多寡还大,则赶回的词项数就是全方位词项数。客户端应用程序利用这种字典式的词表来提供“您是要寻觅。。。吗?(Did
    you
    mean…)”的效率,日常那些选项与下部要讲的--buildfreqs选料一齐使用。示例:

    $ indexer myindex --buildstops word_freq.txt 1000
    

    那条命令在当前目录爆发三个word_freq.txt文件,内含myindex这么些目录中最常用的1000个词,且最常用的排在最终面。注意,当钦定了四个索引名或应用了--all分选(相当于列出布局文件中的全数索引名)时,这些选项对中间的末梢三个索引起功用。

  • --buildfreqs 与 --buildstops一路使用
    (即使未有点名 --buildstops 则--buildfreqs也被忽视).
    它给--buildstops发生的词表的每项扩大二个计数音信,即该词在目录中国共产党出现了不怎么次,那在建立停用词(stop
    words,出现尤其普及的词)表时或者有用。在付出“您是要探究。。。吗?(Did
    you
    mean…)”的效率时这一个选项也能帮上忙,因为有了它你就能分晓二个词比另2个像样的词出现得更频仍的水平。示例:

    $ 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会对将要合并进去的文书档案做二遍过滤,唯有由此过滤才能最终出现在对象索引中。举二个实用的事例,若是有个别索引有一个“已去除(deleted)”属性,0代表“尚未删除”。那样3个目录能够用如下命令实行合并:

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

    如此标志为已去除的文书档案(值为一)就不会并发在新变化的目标索引中了。那几个选项能够在命令行上内定数次,以便内定多少个相继的过滤,那样二个文档要想合并到最终的目的索引中去,就非得逐1通过全部那一个过滤。

2.  searchd一声令下参考

searchd 也是sphinx的两个重大工具之1。 searchd是系统实际处理搜索的零部件,运维时它显示得就像是一种服务,他与客户端应用程序调用的熟视无睹的API通信,负责接受询问、处理查询和再次回到数据集。

不同于 indexersearchd 并不是规划用来在命令行或许一般的剧本中调用的,
相反,它还是做为一个看护程序(daemon)被init.d调用(在Unix/Linux类系统上),或然做为1种服务(在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 用来显式内定3个PID文件。PID文件存款和储蓄着有关searchd的进程新闻,那些消息用于进度间通信(例如indexer亟待明白那些PID以便在轮换索引的时候与searchd进行广播发表)searchd在常规情势运作时会使用贰个PID(即不是利用–console选项运维的),但有十分的大概率存在searchd在调整台(--console)方式运作,而同时正在索引正在进行翻新和更替操作的情景,此时就要求二个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,但要使用低于十二四的端口号大概须要权限较高的账户。使用示例:

    $ searchd --port 9313
    
  • --index <index> 强制searchd只提供针对性钦点索引的搜寻服务。跟上边的--port壹律,那第2是用于调节和测试,若是是漫长利用,则应该写在配备文件中。使用示例:

    $ searchd --index myindex
    

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

注意,在Windows上searchd默认以--console方式运作,除非用户将它安装成1个劳务。

  • --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> 在设置或卸载服务时内定服务的名字,那几个名字会现出在管控纽伦堡。有3个暗许的名字searchd,但若安装服务的种类恐怕有多少个管理员登入,或同时运维四个searchd实例,那么起二个描述性强的名字将是个好好主意。注意,唯有在与--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留神于在命令行上对索引举办高效测试,而不要求营造三个错综复杂的架构来拍卖到劳动器端的总是和处理服务器再次来到的响应。

注意:search并不是统一筹划用来做为客户端应用程序的壹局地。大家强烈建议用户毫无针对search编辑接口,相反,应该针对searchd。Sphinx提供的其余客户端API也都不匡助那种用法。(任何时候search接连每趟都再度调入索引,而searchd会把索引缓冲在内部存储器中以利质量)。

澄清了那几个大家就足以三番五次了。好多种经营过API构造的查询也得以用search来成功,不过对于万分复杂的查询,可能照旧用个小本子和呼应的API调用来得以落成比较轻易。除此而外,或许有点新的风味先在searchd系统中贯彻了而从未引进到search中。

search 的调用语法如下:

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

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

默许行为是对在安插文件中设置的全部索引的全部字段寻觅word一(AND word2AND
word三….)。要是用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) 退换相称方式,相配钦定的随意一个词(word1OSportage word二 O揽胜word3),这对应API调用中向SetMatchMode传递参数SPH_MATCH_ANY
  • --phrase (可简写为 -p )
    更换相称形式,将点名的成套词做为四个词组(不包蕴标点符号)构成查询,这对应API调用中向SetMatchMode传递参数SPH_MATCH_PHRASE
  • --boolean (可简写为-b ) 将同盟方式设为 Boolean
    matching
    。注意如果在命令行上接纳布尔语法,只怕须求对某个符号(用反斜线“\”)加以转义,以幸免外壳程序(shell)或命令行处理器对那些标志做越发领会,例如,在Unix/Linux系统上必须转义“&”避防御search被fork成1个后台进度,尽管那几个难题也能够像下文同样通过采用--stdin选料来消除。那几个选项对应API调用中向SetMatchMode传递参数SPH_MATCH_BOOLEAN
  • --ext (可简写为 -e ) 将万分形式设为Extended
    matching
    。那对应与API调用中向SetMatchMode传送参数SPH_MATCH_EXTENDED。要小心的是因为已经有了更加好的恢弘相称形式版本②,所以并不鼓励采纳那么些选项,见下一条表达。
  • --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以便钦赐多种过滤,不过即使再度定义针对同三个属性的过滤器,那么第三回钦点的过滤条件会覆盖第三次的。

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

  • --limit <count> (可简写为 -l count )
    限制重临的最多相配结果数。假诺钦定了分组(group)选项,则象征的是回到的最多相称组数。暗中同意值是二十一个结果(与API同样)
  • --offset <count> (可简写为 -o <count> )
    从第count个结实起头回来,用于给寻找结果分页。假使想要每页1柒个结实,那么第②页就从偏移量20从头,第1页从偏移量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 寻找结果按日期升序(日期较久远的在前)排列。要求索引中有二个天性被钦赐为时间戳。需求索引中有三本性能被钦赐为时间戳。
  • --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)

还有1个-c [file]选择,用来钦定一个涵盖大小写转换方面细节的文书。

用法示例:

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

结果文件会蕴藏字典中富含的总体词,字典序排列,wordforms文件格式。能够依据现实的使用环境定制那一个文件。结果文件的2个例证:

zone > zone
zoned > zoned
zoning > zoning

5.  indextool指令参考

indextool 是版本0.玖.玖-rc第22中学引进的支持理工程师具。用于出口关于物理索引的有余调节和测试音讯。(今后还布署参加索引验证等功用,因而起名较indextool而不是indexdump)。
基本用法如下:

indextool <command> [options]

唯一三个负有命令都有的选用是--config,用于指定安顿文件:

  • --config <file> (可简写为 -c <file> ) 覆盖私下认可的安插文件名。

任何可用的一声令下如下:

  • --dumpheader FILENAME.sph 在统筹任何其余索引文件甚至配置文件的前提下,火速输出索引头文件的始末,包涵索引的全部安装,越发是一体化的习性列表、字段列表。在本子0.玖.玖-rc2在此以前,这么些命令是由search工具提供的。
  • --dumpheader INDEXNAME 输出给定索引名的索引头内容,索引头文件的路子是在配置文件中查得的。
  • --dumpdocids INDEXNAME 输出给定索引名涉及的文书档案ID。数据是从属性文件(.spa)中抽出的,由此须求doc_info=extern正常办事。
  • --dumphitlist INDEXNAME KEYWORD 输出内定关键字KEYWOENVISIOND在实践索引中的的全方位冒出。

 

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数据行生成索引的时光为贰分钟左右(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了,一千W的数目行中,使用API调用全文字笔迹核实索再次回到的时光<500ms,使用接口的连锁参数比如能够决定找出重临行数、分组排序、限制条件等,从sphinx重回ids(MYSQL数据库表中的主键),依据ids能够到MYSQL中寻觅到供给的数据。

PHP 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'

 

 

 

相关文章