sphinx汉语版Coreseek中文搜索引擎安装和应用格局(Windows)

  **图片 1**

  今天闲下来钻探了MYSQL的目录优化,继而掌握了MYSQL的全文字笔迹检验索,在大数据量下一旦您利用like去找寻数据库的音讯的落到实处全文字笔迹检验索,那么恭喜你你会暴库。。

  全文检索引擎中Sphinx是比较雅观的,可是对中文扶助不是众多,所以就有了Coreseek,宗旨是Sphinx引擎,然而对中文查找有了很好的支撑,而且有很全的国语文书档案,开源免费试用,协理Windows、Linunx甚至是Mac。

  Coreseek介绍

   Coreseek
周详补助: FreeBSD6/7/8,Mac OS X
10.6,福特ExplorerHEL⑤ 、CentOS-五 、Fedora-12/1叁 、gentoo-⑩ 、openSUSE-10/1一 、slackware-13.0/13.一 、debian-⑤ 、ubuntu-9/⑩ 、archlinux-二零一零,WindowsXP、Windows200三 、Windows柒 、Windows
Server
二〇〇八等,32与陆10个人操作系统均可选拔,可支持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来对个中1个一定的目录进行重新编排索引操作,恐怕是双重编辑全数索引——不制止某三个或同时整个,用户总是能够钦定现有索引的2个组合。

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的爱戴工作中很有用。在上述景况中,整个索引集每一天或周周或别的什么适当的时刻间隔中就再也确立1遍。用法示例:

    $ indexer --config /home/myuser/sphinx.conf --all
    
  • --rotate 用于轮换索引。对新的文书档案建立目录时大约肯定都保证搜索服务还是可用,除非您有信心在搜寻服务结束同时不给你的用户带来困扰。--rotate树立一个外加的目录,并列于原有索引(与原来索引在平等目录,不难地在本来索引文件名基础上加三个.new后缀)。一旦那个额外的目录建立完毕,indexersearchd发1个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并不真正更新钦命的目录,而只是“假装”建在立索引似地处理3回数据,包涵运营sql_query_pre或者sql_query_post选料内定的查询。outputfile.txt文件最后会蕴藏1个词表,每行叁个词,按词频排序,高频在前。参数N钦命了列表中最多可出现的词项数据,若是N日币引中全部词项的多寡还大,则赶回的词项数正是成套词项数。客户端应用程序利用那种字典式的词表来提供“您是要物色。。。吗?(Did
    you
    mean…)”的效果,平常这几个选项与下部要讲的--buildfreqs挑选一同使用。示例:

    $ indexer myindex --buildstops word_freq.txt 1000
    

    那条命令在当前目录爆发一个word_freq.txt文本,内含myindex这么些目录中最常用的1000个词,且最常用的排在最前边。注意,当钦点了多个索引名或利用了--all挑选(相当于列出布局文件中的全部索引名)时,那么些选项对内部的最后3个索引起功能。

  • --buildfreqs 与 --buildstops联手使用
    (假诺没有点名 --buildstops 则--buildfreqs也被忽略).
    它给--buildstops发出的词表的每项扩大3个计数新闻,即该词在目录中国共产党出现了有个别次,这在创造停用词(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 的3个参数,如若没有点名 --merge
    --merge-dst-range 也被忽视)合并时,indexer会对将要合并进去的文书档案做二次过滤,唯有因此过滤才能最后现身在指标索引中。举三个实用的例子,若是有个别索引有三个“已去除(deleted)”属性,0代表“尚未删除”。那样二个目录能够用如下命令举办统一:

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

    这么标记为已去除的文书档案(值为1)就不会现出在新变化的靶子索引中了。这么些选项能够在命令行上内定数次,以便钦点多少个相继的过滤,那样2个文书档案要想合并到结尾的目的索引中去,就务须逐一通过全方位这一个过滤。

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))出今后查询日志文件(每条查询输出2遍)和情状报告(累加之后)中。那些选项正视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方式运作,除非用户将它安装成3个服务。

  • --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实例,那么起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
展开2回平滑的重启。新的呼吁不会被接受;不过已经开头的呼吁不会被粗鲁中断。

SIGHUP
开发银行索引轮询。取决于 seamless_rotate 的装置,新的请求恐怕会在短时间内陷入停顿;客户端将选用到一时半刻错误。

SIGUSR1
强制重新打开searchd日志和查询日志,使得日志轮询能够开始展览。

3.  search命令参考

search是Sphinx中的3个协助理工科程师具。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
    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 ) 将合作情势设为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)选项,则意味着的是回来的最多匹配组数。暗中认可值是1九个结实(与API相同)
  • --offset <count> (可简写为 -o <count> )
    从第count个结实发轫回到,用于给寻找结果分页。如若想要每页十几个结实,那么第2页就从偏移量20方始,第2页从偏移量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]选拔,用来钦点1个分包大小写转换方面细节的文本。

用法示例:

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 输出钦点关键字KEYWOPRADOD在履行索引中的的全套产出。

 

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'

 

 

 

相关文章