sphinx中文版Coreseek中文查找引擎安装及用方法(Windows)

  **Oracle 1**

  昨天空余下来研究了MYSQL的目优化,继而了解了MYSQL的全文检索,在特别数据量下要您使用like去搜寻数据库的音信之兑现全文检索,那么恭喜您而会暴库。。

  全文检索引擎中Sphinx是比较出色的,但是针对汉语支持非是过多,所以即使有了Coreseek,核心是Sphinx引擎,但是针对中文查找有矣充分好的支持,而且有死咸的中文文档,开源免费试用,支持Windows、Linunx甚至是Mac。

  Coreseek介绍

   Coreseek
全面支持: FreeBSD6/7/8,Mac OS X
10.6,RHEL5、CentOS-5、Fedora-12/13、gentoo-10、openSUSE-10/11、slackware-13.0/13.1、debian-5、ubuntu-9/10、archlinux-2010,WindowsXP、Windows2003、Windows7、Windows
Server
2008齐,32及64各类操作系统均只是使用,可支持MySQL、MariaDB、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来针对中间一个特定的目进行更编写索引操作,或者是重复编排所有索引——不限于某一个要同时所有,用户总是可以指定现有索引的一个组合。

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定时任务之地下还是脚本中,这些状况下大部分出口是可有可无或全没因此之,除非是起了几许类型之缪。用法示例:

    $ indexer --rotate --all --quiet
    
  • --noprogress 不随时显示速度信息,而是只有在目结束时告知最后的状态细节(例如为安文档建立了目录,建立目录的速相当)。当脚本没有运行于一个控制台(console,或“tty”)时,这个选项是默认的。用法示例:

    $ indexer --rotate --all --noprogress
    
  • --buildstops <outputfile.text> <N> 像建立目录一样扫描索引对应之数据源,产生一个结尾见面吃在索引的词项的列表。换种说法,产生一个之所以是目录可以找的词项的列表。注意,这个选项使indexer并无着实更新指定的目录,而只是“假装”建在立索引似地拍卖同通数据,包括运转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这个目录中最常用的1000单词,且极常用之败在太前方。注意,当指定了差不多个寻引名或用了--all分选(相当给列有布局文件被之所有索引名)时,这个选项对其中的末尾一个寻觅引起作用。

  • --buildfreqs 与 --buildstops协办使用
    (如果没有点名 --buildstops 则--buildfreqs为于忽略).
    它吃--buildstops产生的词表的各国起多一个计数信息,即该词在目录中并出现了有些次,这当确立停用词(stop
    words,出现特别大的词)表时可能来因此。在开“您是一旦摸。。。吗?(Did
    you
    mean…)”的力量时这个选项也能帮上忙碌,因为来了其若虽会清楚一个词比任何一个类的乐章出现得又累之水准。示例:

    $ 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代表“尚未删除”。这样一个索引可以用如下命令进行统一:

    $ 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)模式运作,而而正索引正在进展创新和更替操作的景象,此时就用一个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安成一个微软管理控制台(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实例,那么从一个描述性强的名将是只好好主意。注意,只有在与--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的账户对配备文件及目录文件及其所在路径有读权限即可。

默认行为是指向在部署文件被设置的全体目的全体字段搜索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) 更改匹配模式,匹配指定的随意一个词(word1
    OR word2 OR
    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 ) 将配合模式设为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以便指定多重过滤,但是若再定义针对同一个属性之过滤器,那么第二次于指定的过滤条件会蒙第一差的。

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

  • --limit <count> (可简写为 -l count )
    限制返回的极度多匹配结果数。如果指定了分组(group)选项,则表示的凡回到的无比多匹配组数。默认值是20单结果(与API相同)
  • --offset <count> (可简写为 -o <count> )
    从第count单结果开始回来,用于为找结果分页。如果想要每页20独结果,那么第二页就从偏移量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 搜索结果以日期升序(日期较久远的在前方)排列。要求查找引中生出一个特性被指定为时间戳。要求查找引中起一个性能为指定为时间戳。
  • --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]挑选,用来指定一个包含大小写转换点细节之公文。

就此法示例:

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 输出指定要字KEYWORD在尽索引中之的总体出现。

 

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中找寻到用的多寡。

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

 

 

 

相关文章