linux下coreseek 安装及使用方法详解

很多使用php+mysql数据库的朋友都有可能使用到coreseek了,coreseek是一款非常不错的中文全文检索/搜索软件了,下面小编就一起来看看吧.

一般站点都需要搜索功能,如果是php+mysql站点,建议选择coreseek,如果是java站点建议使用lucene,coreseek 是一款很好的中文全文检索/搜索软件,支持高速建立索引、有很强的扩展性、支持分布式检索,支持不同的搜索模式(’完全匹配’,’短语匹配’,’任一匹配’).

一、coreseek 安装

1:安装mmseg分词库

  1. wgethttp://www.coreseek.cn/uploads/csft/4.0/coreseek-3.2.14-beta.tar.gz
  2. tar-zxvfcoreseek-3.2.14-beta.tar.gz
  3. cdcoreseek-3.2.14-beta
  4. cdmmseg-3.2.14
  5. ./bootstrap
  6. ./configure--prefix=/usr/local/mmseg3#配置安装目录
  7. make
  8. makeinstall
  9. cd..

2:安装coreseek

  1. cdcsft-3.2.14
  2. shbuildconf.sh
  3. ./configure--prefix=/usr/local/coreseek--without-unixodbc--with-mmseg--with-mmseg-includes=/usr/local/mmseg3/include/mmseg/--with-mmseg-libs=/usr/local/mmseg3/lib/--with-mysql=/usr/local/mysql
  4. make
  5. makeinstall
  6. cd..

3:测试mmseg分词和coreseek检索

  1. cd/usr/local/src/coreseek-3.2.14
  2. cdtestpack
  3. catvar/test/test.xml#现实的是中文的内容
  4. /usr/local/mmseg3/bin/mmseg-d/usr/local/mmseg3/etcvar/test/test.xml#显示xml文件内容
  5. /usr/local/coreseek/bin/indexer-cetc/csft.conf--all#建立索引
  6. /usr/local/coreseek/bin/search-cetc/csft.conf#进行搜索

二、coreseek配置和使用

1:配置example.conf文件

  1. cd/usr/local/coreseek/etc
  2. cpsphinx-min.conf.distexample.conf

对example.conf的配置进行改造,变成我们所需的配置文件.

  1. sourceexample
  2. {
  3. type=mysql
  4. sql_host=localhost
  5. sql_user=***
  6. sql_pass=***
  7. sql_db=***
  8. sql_port=3306
  9. sql_sock=/tmp/mysql.sock
  10. sql_query_pre=SETNAMESutf8
  11. sql_query=SELECTid,contentFROMtable_name#不管表的主键叫什么,查出来的结果都是为id
  12. sql_query_info_pre=SETNAMESutf8#命令行查询时,设置正确的字符集
  13. sql_query_info=SELECT*FROMtableWHEREid=$idLIMIT100#命令行查询时,从数据库读取原始数据信息
  14. }
  15. #index定义
  16. indexexample
  17. {
  18. source=example#对应的source名称
  19. path=/usr/local/coreseek/var/data/example/#请修改为实际使用的绝对路径
  20. docinfo=extern
  21. mlock=0
  22. morphology=none
  23. min_word_len=1
  24. html_strip=0
  25. #中文分词配置,详情请查看:http://www.coreseek.cn/products-install/coreseek_mmseg/
  26. charset_dictpath=/usr/local/mmseg3/etc/#BSD、Linux环境下设置,/符号结尾
  27. #charset_dictpath=etc/#Windows环境下设置,/符号结尾,最好给出绝对路径,
  28. charset_type=zh_cn.utf-8
  29. }//phpfensi.com
  30. #全局index定义
  31. indexer
  32. {
  33. mem_limit=128M
  34. }
  35. #searchd服务定义
  36. searchd
  37. {
  38. listen=9312
  39. read_timeout=5
  40. max_children=60
  41. max_matches=1000
  42. seamless_rotate=0
  43. preopen_indexes=0
  44. unlink_old=1
  45. pid_file=/usr/local/coreseek/var/log/searchd_example.pid#请修改为实际使用的绝对路径,例如:/usr/local/coreseek/var/...
  46. log=/usr/local/coreseek/var/log/searchd_example.log#请修改为实际使用的绝对路径,例如:/usr/local/coreseek/var/...
  47. query_log=/usr/local/coreseek/var/log/query_example.log#请修改为实际使用的绝对路径,例如:/usr/local/coreseek/var/...
  48. }

2:开启searchd服务(这点很重要).

coreseek刚安装后searchd服务是没开启的,需要先开启,不然创建索引的时候会出错,先在 /usr/local/src/coreseek/var/log下创建一个searchd_example.pid文件,然后执行下面的代码:

  1. /usr/local/coreseek/bin/searchd--config/usr/local/coreseek/etc/example.conf

3:创建索引

/usr/local/coreseek/bin/indexer -c /usr/local/coreseek/etc/example.conf --all --rotate

出现下面的提示:

  1. CoreseekFulltext3.2[Sphinx0.9.9-release(r2117)]
  2. Copyright(c)2007-2011,
  3. BeijingChoiceSoftwareTechnologiesInc(http://www.coreseek.com)
  4. usingconfigfile'/usr/local/coreseek/etc/example.conf'...
  5. indexingindex'example'...
  6. collected1docs,0.0MB
  7. sorted0.0Mhits,100.0%done
  8. total1docs,631bytes
  9. total0.005sec,118854bytes/sec,188.35docs/sec
  10. total1reads,0.000sec,0.8kb/callavg,0.0msec/callavg
  11. total5writes,0.000sec,0.5kb/callavg,0.0msec/callavg
  12. rotatingindices:succesfullysentSIGHUPtosearchd(pid=14094).

说明coreseek已经可以使用了.

可以把创建索引的命令写入crontab里面进行定时,实时更新索引.

4:php 和 coreseek 结合进行查询

先下载sphinxapi,然后文件引入结合php进行查询,下面更多参数的详解和配置,可以参考 coreseek api php手册.

  1. require_once('sphinxapi');
  2. $s=newSphinxClient();
  3. $s->SetServer('127.0.0.1','9312');//设置searchd的主机名和TCP端口
  4. $s->SetConnectTimeout(1);//设置连接超时
  5. $s->SetMatchMode(SPH_MATCH_BOOLEAN);//设置全文查询的匹配模式
  6. $page_size=20;//自己定义的页数
  7. $s->SetLimits($start,$page_size);//设置返回结果集偏移量和数目
  8. $s->SetSortMode(SPH_SORT_EXTENDED,"good_countDESC,@idDESC");//设置排序
  9. $s->SetArrayResult(true);//控制搜索结果集的返回格式
  10. $res=$s->Query($keyword,'*');//执行搜索查询
  11. $res_list=$res['matches'];

coreseek安装遇到的错误和问题解决方案.

1、测试mmseg分词的时候

执行:/usr/local/coreseek/bin/indexer -c etc/csft.conf --all

提示下面的错误:

  1. /usr/local/coreseek/bin/indexer:errorwhileloadingsharedlibraries:libmysqlclient.so.18:cannotopensharedobjectfile:Nosuchfileordirectory

原因:sphinx indexer的依赖库ibmysqlclient.so.18找不到.

解决办法:

vi /etc/ld.so.conf

加入 /usr/local/mysql/lib

然后运行 ldconfig 问题解决

2、执行索引的时候

  1. /usr/local/coreseek/bin/indexer-c/usr/local/coreseek/etc/csft_ttd_search.conf--all--rotate

提示下面的错误:

  1. FATAL:failedtoopen/usr/local/coreseek/var/data/ttd_article/.tmp.spl:Nosuchfileordirectory,willnotindex.Try--rotateoption.

原因:source源找不到mysql.sock

解决办法:在配置文件csft_ttd_search.conf(自己创建的文件)的 source源 加入下面的代码.

sql_sock = /tmp/mysql.sock

3、执行索引的时候,出现的警告,导致索引没创建成功.

  1. WARNING:failedtoopenpid_file'/usr/local/coreseek/var/log/searchd_ttd_search.pid'.
  2. WARNING:indicesNOTrotated.

原因:找不到searchd_ttd_search.pid文件

解决办法:在’/usr/local/coreseek/var/log 下创建searchd_ttd_search.pid文件

再执行/usr/local/coreseek/bin/indexer -c /usr/local/coreseek/etc/csft_ttd_search.conf –all –rotate

出现了另外一个警告:

  1. WARNING:failedtoscanfpidfrompid_file'/usr/local/coreseek/var/log/searchd_ttd_search.pid'.
  2. WARNING:indicesNOTrotated.

原因:虽然创建了searchd_ttd_search.pid文件,但是里面没有写入进程id

解决办法(根本原因):在执行索引之前没有启动searchd服务,因此执行下面的命令.

  1. /usr/local/coreseek/bin/searchd--config/usr/local/coreseek/etc/ttd_search.conf

出现了期待已久的成功提示:

  1. CoreseekFulltext3.2[Sphinx0.9.9-release(r2117)]
  2. Copyright(c)2007-2011,
  3. BeijingChoiceSoftwareTechnologiesInc(http://www.coreseek.com)
  4. usingconfigfile'/usr/local/coreseek/etc/ttd_search.conf'...
  5. listeningonallinterfaces,port=9312
  6. rotatingindex'mysql':success

相关广告
  • linux下coreseek 安装及使用方法详解 linux下coreseek 安装及使用方法详解 linux下coreseek 安装及使用方法详解
相关阅读

linux下coreseek 安装及使用方法详解

2019/10/10 17:45:01 | 谷歌SEO算法 | 发外链