知识点
相关文章
更多最近更新
更多Ubuntu上Coreseek+PHP的安装
2019-03-27 01:09|来源: 网路
Coreseek是一个基于sphinx引擎,支持与mmseg中文分词模块合作完成中文的全文搜索引擎。相对sql这类操作,Coreseek负载可谓是微不足道。当然类似的索引服务器还有给予Java的solr等。我选择coreseek的主要原因之一是他可以通过配置后可以与现有的mysql客户端兼容,并可以直接嵌入到mysql中成为mysql的引擎之一。
首先,下载安装包,我选择的是最新的stable版, 不过不客气的说,即便是coreseek的stable版本,不论是从稳定性、兼容性还是灵活性上都不能算是完善,至少无法跟apache这类经典应用相提并论。
安装Ubuntu开发包:
apt-get install make gcc g++ automake libtool mysql-client libmysqlclient15-dev libxml2-dev libexpat1-dev
解压:
tar xzvf coreseek-3.2.14.tar.gz
cd coreseek-3.2.14
应该看到有mmseg csft testpack 至少3个目录
安装mmseg中文分词模块
cd mmseg-3.2.14
./bootstrap
./configure –prefix=/usr/local/mmseg3 #不喜欢这个官方目录配置,更换目录后配置无法生效郁闷了很久,稍后再说
make
make install
cd ../testpack
/usr/local/mmseg3/bin/mmseg -d /usr/local/mmseg3/etc var/test/test.xml #测试结果,请确保终端可以看到utf8中文,应该可以看到分词后的结果
安装Python包
虽然coreseek支持直接的mysql连接,但考虑到分词、分表的情况,这种设置不是很灵活。我的方案是通过python脚本的预处理,将mysql的数据整理后传输到coreseek建立索引。这样还有一个优势就是“万能数据源”——memcache、redis这类几乎不指望coreseek官方支持的妖异存储方案,只要有python的api,均可以索引。
官方的安装手册中介绍的python接口是基于ActivePython 替代系统python语言的方式进行的。ActivePython属于第三方封包,远没有系统自带python来的方便,刚开始用系统python测试了数次,均不成功,后来根据出错信息,找到了原因。
apt-get install python-dev python-sqlite python-mysqldb python-memcache
安装coreseek
cd ../csft-3.2.14
./buildconf.sh
./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 –with-python
make
make install
cd ../testpack
/usr/local/coreseek/bin/indexer -c etc/csft.conf –all
/usr/local/coreseek/bin/search -c etc/csft.conf 网络搜索 #没什么问题了
安装libsphinxclient
coreseek官方教程中建议php使用直接include一个php文件进行操作,事实上php有独立的sphinx模块可以直接操作coreseek (coreseek就是sphinx!)已经进入了php的官方函数库,而且效率的提升不是一点点!但php模块依赖于libsphinxclient包。
cd ../csft-3.2.14/api/libsphinxclient
./configure
make
make install
ldconfig
安装php-sphinx支持
apt-get install php5-dev
wget http://pecl.php.net/get/sphinx-1.1.0.tgz
tar vzxf sphinx-1.1.0.tgz
cd sphinx-1.1.0
phpize
./configure
make
make install
确信成功后修改php.ini,还是遵从Ubuntu的配置规则
echo “extension=sphinx.so” > /etc/php5/conf.d/sphinx.ini
如果使用apache或者fast-cgi的话,请重起。察看phpinfo() 如下则安装成功。
sphinx
sphinx support | enabled |
---|---|
Version | 1.1.0 |
Revision | $Revision: 303462 $ |
配置coreseek
说容易也容易,说麻烦也麻烦的工作,照贴一份吧前面说过,我用的是python数据源
/usr/local/coreseek/etc/coreseek.conf
{
path = /usr/local/coreseek/DBSource #python 数据源脚本的存放路径
}
source Blog #索引库1 “Blog”
{
type = python #类型为python
name = Blog.MainSource #调用python的class
}
index Blog
{
source = Blog #数据源名称
path = /data/sphinx/Blog #数据文件存放路径
docinfo = extern
mlock = 0
morphology = none
min_word_len = 1
html_strip = 0
charset_dictpath = /usr/local/mmseg3/etc/ #mmseg中文分词库的位置,本文开头时我说不能修改mmseg的安装路径就错在这里
charset_type = zh_cn.utf-8
}
source UserInfo #索引库2 “UserInfo” 其余同上
{
type = python
name = UserInfo.MainSource
}
index UserInfo
{
source = UserInfo
path = /data/sphinx/UserInfo
docinfo = extern
mlock = 0
morphology = none
min_word_len = 1
html_strip = 0
charset_dictpath = /usr/local/mmseg3/etc/
charset_type = zh_cn.utf-8
}
{
listen = 9312 #显而易见,默认的监听端口
listen = 172.18.196.90:3306:mysql41 #兼容mysql方式的监听,我们配置了php-sphinx,故除了命令行方式外意义不大,可以关闭
pid_file = /var/run/coreseek.pid
}
配置的部分都OK了,当然可以考虑通过这里(http://www.codesky.net/Linux/2012-07/66077.htm)介绍的方法直接打包成deb或者制作rpm。
python数据源脚本示意
贴过来供各位参考,注意的是返回的“字段名”必须是全小写
#!usr/bin/env python
from DBConfig import DBConfig
import MySQLdb
class MainSource(object):
def __init__(self, conf):
self.conf=conf
self.data=[]
self.idx = 0
def GetScheme(self): #数据结构
return [
('id' , {'docid':True } ), #id 必须是正整数
('uid', { 'type':'text'} ),
('blogcontent', { 'type':'text'} ),
]
def GetFieldOrder(self): #排序
return [('id'),('uid')]
def Connected(self): #链接
self.TableList=DBConfig().getDBTableConfig("BlogContent")
self.getTableData()
pass
def NextDocument(self): #指针进行下一行
if ( len(self.data) > 0 ):
item = self.data.pop()
#item = self.data[self.idx]
self.id = item["id"]
self.uid = item["uid"]
self.blogcontent = item["blogcontent"]
self.idx += 1
return True
elif (len(self.TableList ) > 0):
self.getTableData()
return self.NextDocument()
else:
return False
def getTableData(self):
dConfig = self.TableList.pop()
mysqlHandle=MySQLdb.connect(host=dConfig["host"], user=dConfig["user"],
passwd=dConfig["passwd"], db=dConfig["dbName"])
sSQL="SELECT blogId, uid, blogContent FROM " + dConfig["tableName"]
tableNumber = int(dConfig["tableName"][-2:], 16)
mysqlCursor=mysqlHandle.cursor()
mysqlCursor.execute(sSQL)
lResultList=mysqlCursor.fetchall()
mysqlHandle.close()
lData=[]
for lRow in lResultList:
fullId = int (lRow[0]) * 1000 + tableNumber
dRow={
"id":fullId,
"uid":lRow[1],
"blogcontent":lRow[2]
}
lData.append(dRow)
if (len(lData) > 0 ):
self.data.extend(lData)
if __name__ == "__main__":
conf = {}
source = MainSource(conf)
source.Connected()
while source.NextDocument():
print source.blogContent
pass开启服务器
建立索引:
/usr/local/coreseek/bin/indexer -c /usr/local/coreseek/etc/sphinx.conf –all 正常情况下,你会在配置文件设置的/data/sphinx目录下看到有索引文件生成。
开启服务器:
/usr/local/coreseek/bin/searchd -c /usr/local/coreseek/etc/sphinx.conf 你可以netstat -an| grep 9312 是否打开
设置定期更新索引:
coreseek的索引机制决定的他必须定期例遍全表,当然可以通过修改数据源的方式实现增量索引,然后合并索引,这样更靠谱,当然为了防止伸手党,在这里暂时不做介绍。
crontab -e
*/15 * * * * /usr/local/coreseek/bin/indexer -c /usr/local/coreseek/etc/sphinx.conf –all –rotate #15分钟索引一次
转自:http://www.cnblogs.com/j-king/p/3641529
相关问答
更多-
ubuntu安装[2022-05-12]
ubuntu安装方式很多: 1.光盘安装:下载的镜像通过win下的nero等软件刻盘然后使用光盘引导系统安装。 2.硬盘安装:将下载的镜像中提取出kernel文件,通过grub4dos引导系统安装。 3.网络安装:管理员经常使用的安装方式。 4.wubi安装:不用了解linux下文件系统就能安装ubuntu,但是在双重引导菜单的系统下安装可能会出问题,例如vista和windows7. 硬盘安装我写过一篇教程,你可以参考下: 不过我写的是8.10的,9.10的要将教程里面的所有initrd.gz换成ini ... -
使用LNMP一键安装包怎么装Coreseek[2022-11-10]
看他们官网的安装教程很详细 http://www.coreseek.cn/products-install/install_on_bsd_linux/ -
ubuntu linux 8.04中安装php后如何使用?[2022-05-12]
1 安装mysql sudo apt-get install mysql-server mysql-client sudo netstat -tap | grep mysql //测试mysql服务是不是起来了 tcp 0 0 localhost.localdomain:mysql *:* LISTEN - //表示正常 sudo /etc/init.d/mysql restart //重新启动mysql服务 sudo mysqladmin -u root password newpassword //设置 ... -
coreseek 安装完成后 怎么调用接口[2024-01-14]
然后重新运行aclocal和autoconf aclocal && autoconf 最后再次运行automake automake 然后继续mmseg的安装 ./configure --prefix=/usr/local/mmseg make && make install 如果make 报错 There is an easy fix when you get such messages as "X--tag=CXX: command not found". Just type: export echo= ... -
只要它是您正在使用的php repo的一部分,这将是您正在寻找的包。 sudo apt install php7.1-imap As long as it is part of the php repo you are using, this will be the package you are looking for. sudo apt install php7.1-imap
-
Ubuntu 16.04以PHP7为标准,所以没有PHP5包 但是,如果您喜欢,可以添加PPA来获取这些包: 删除所有的股票php包 列出使用dpkg -l | grep php| awk '{print $2}' |tr "\n" " "安装的php包 dpkg -l | grep php| awk '{print $2}' |tr "\n" " " dpkg -l | grep php| awk '{print $2}' |tr "\n" " "然后用sudo aptitude purge your_p ...
-
试试php5.6-gmp : sudo apt install php5.6-gmp 显然这只会为PHP5.6安装gmp扩展。 如果您希望它为7.0,请使用正确的包名称: sudo apt install php7.0-gmp Try php5.6-gmp: sudo apt install php5.6-gmp Obvously this will only install gmp extension for PHP5.6. If you want it to 7.0, use the right ...
-
这取决于您的要求,BTW以下是基本配置,并且大部分时间都适合。 fastcgi_split_path_info ^(.+\.php)(.*)$; fastcgi_pass backend; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME /var/www$fastcgi_script_name; include fastcgi_params; fastcgi_param QUERY_ST ...
-
显示的版本可能是好的版本,如果你只是想要版本,你也可以用php -i或php -v获取更多信息。 The version displayed is probably the good version, you can also get more information with php -i or php -v if you just want the version.
-
包php5在Ubuntu 16.04 LTS上没有安装候选(Package php5 has no installation candidate on Ubuntu 16.04 LTS)[2023-02-11]
Ubuntu 16.04附带PHP7,没有PHP5包。 删除所有php7包: sudo aptitude purge `dpkg -l | grep php| awk '{print $2}' |tr "\n" " " 新的PPA sudo add-apt-repository ppa:ondrej/php 更新包: sudo apt-get update 安装PHP: sudo apt-get install php5.6 检查PHP版本: php -v Ubuntu 16.04 comes w ...