SQL Serversphinx普通话版Coreseek普通话查找引擎安装和使用方法(Windows)

  **SQL Server 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-十分九、archlinux-二零零六,WindowsXP、Windows200三 、Windows七 、Windows
Server
二零零六等,32与63个人操作系统均可应用,可支撑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的三个基本点工具之一。不管是从命令行直接调用,依旧作为2个较大的脚本的一某个行使,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发2个SIGHUP信号做为通告。searchd会尝试将引得重新命名(给本来索引加上.old后缀,而把带有.new后缀的新索引改为原名,以达替换之目标),继而用新的文本重启服务。依 seamless_rotate 选项设定之不一样,在新索引可用此前只怕有一点小的延期。用法示例:

    $ indexer --rotate --all
    
  • --quiet 使indexer不出口除错误(error)外的其它交事务物。那么些选项还是拽可用在cron定时职务的地步下或然脚本中,这么些处境下超过3/6输出是可有可无或完全没用的,除非是爆发了某个类别的一无所长。用法示例:

    $ indexer --rotate --all --quiet
    
  • --noprogress 不随时呈现速度新闻,而是仅在目录甘休时告知最终的景观细节(例如为怎么样文书档案建立了目录,建立目录的进程等)。当脚本没有运维在3个控制台(console,或“tty”)时,那一个选项是私下认可的。用法示例:

    $ indexer --rotate --all --noprogress
    
  • --buildstops <outputfile.text> <N> 像建立目录一样扫描索引对应的数据源,爆发3个末段会被参与索引的词项的列表。换种说法,产生八个用这几个目录可以搜寻的词项的列表。注意,那几个选项使indexer并不真的更新钦定的目录,而只是“假装”建在立索引似地拍卖1遍数据,包蕴运营sql_query_pre或者sql_query_post选料钦赐的询问。outputfile.txt文件最后会含有3个词表,每行3个词,按词频排序,高频在前。参数N内定了列表中最多可出现的词项数据,假若N英镑引中全体词项的多少还大,则赶回的词项数就是漫天词项数。客户端应用程序利用这种字典式的词表来提供“您是要寻找。。。吗?(Did
    you
    mean…)”的效应,平日那么些选项与下部要讲的--buildfreqs选取一同使用。示例:

    $ indexer myindex --buildstops word_freq.txt 1000
    

    那条命令在当前目录发生二个word_freq.txt文本,内含myindex那个目录中最常用的一千个词,且最常用的排在最前头。注意,当钦点了三个索引名或采纳了--all挑选(也正是列出布局文件中的全数索引名)时,那么些选项对内部的最终贰个索引起效能。

  • --buildfreqs 与 --buildstops同台使用
    (借使没有点名 --buildstops 则--buildfreqs也被忽略).
    它给--buildstops发出的词表的每项扩充3个计数消息,即该词在目录中国共产党出现了有个别次,那在创设停用词(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会对即将合并进去的文档做2回过滤,只有由此过滤才能最后出现在对象索引中。举一个实用的例子,假若有个别索引有贰个“已删除(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))出现在查询日志文件(每条查询输出二回)和情景报告(累加之后)中。那个选项依赖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实例,那么起3个描述性强的名字将是个好好主意。注意,唯有在与--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中的2个帮助工具。searchd顶住服务器类环境中的搜索,而search瞩目于在命令行上对索引进行高效测试,而不须求营造2个复杂的架构来拍卖到劳动器端的连年和拍卖服务器再次来到的响应。

注意: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
    OTiggo word2 OCR-Vword3),那对应API调用中向SetMatchMode传送参数SPH_MATCH_ANY
  • --phrase (可简写为 -p )
    更改匹配格局,将点名的任何词做为2个词组(不包涵标点符号)构成查询,那对应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)选项,则表示的是回到的最多匹配组数。默许值是二十个结果(与API相同)
  • --offset <count> (可简写为 -o <count> )
    从第count个结实初叶回来,用于给寻找结果分页。借使想要每页十八个结实,那么第贰页就从偏移量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 搜索结果按日期升序(日期较久远的在前)排列。需要索引中有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)

还有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文件格式。能够依据现实的运用环境定制这几个文件。结果文件的二个事例:

zone > zone
zoned > zoned
zoning > zoning

5.  indextool一声令下参考

indextool 是版本0.9.9-rc第22中学引入的援救理工科程师具。用于出口关于物理索引的多种调节和测试消息。(今后还安排插足索引验证等功能,由此起名较indextool而不是indexdump)。
基本用法如下:

indextool <command> [options]

唯一1个具有命令都某个选拔是--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了,一千W的多少行中,使用API调用全文字笔迹检验索再次来到的年月<500ms,使用接口的连带参数比如能够决定搜索再次来到行数、分组排序、限制标准等,从sphinx再次回到ids(MYSQL数据库表中的主键),依据ids能够到MYSQL中找寻到要求的数码。

SQL Server 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'

 

 

 

相关文章