MySQLsphinx中文版Coreseek中文查找引擎安装与运用方式(Windows)

  **MySQL 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> MySQL)
    搜索结果仍指定的习性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中寻觅到得之数据。

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地图