Coreseek Windows下安装调试

 由于项目需要全文检索,后面就去网上查了下资料,找到了Sphinx【中文是狮身人面像】这个全文检索引擎,听说挺好用的,不过没有中文分词。后面又去找了一下,找到了Coreseek,一款中文全文检索/搜索软件。

 

一、Sphinx PHP扩展下载

  PHP已经有专门的Sphinx的扩展文件,点击这里可以下载到不同版本的扩展。

  

  扩展安装成功后,就能看到sphinx信息了。

  

  也可以通过引用一个php类文件达到同样的效果,文件是在api文件夹下面的sphinxapi.php。这个更好用点,在调试的时候发现,如果是直接引用的那个dll有时候会报方法不存在,但是明明在PHP:Sphinx的API说明里面是有的。

  

 

二、安装Coreseek

1) 我这边下载了4.1的版本。按照网站上面写的过程,我在本地布了一下。

  这个local目录其实可以自己随便建立,这里建的我感觉好深,打dos命令的时候挺麻烦的。

  

  

 

2) 打开下载下来的压缩包,etc里面有很多conf的配置文件。

  在var\test文件里有个documents.sql的文件,这一个demo数据库,等下就会用这个做测试。

  

 

3) 把etc中的csft_mysql.conf文件复制到bin中,并改名为sphinx.conf。

  因为我的全文检索需要配合MySQL数据库,所以需要配置这个文件。

  

 

4) 修改配置文件,刚开始配置文件没设置好,老会报错。

复制代码
#MySQL数据源配置,详情请查看:http://www.coreseek.cn/products-install/mysql/
#请先将var/test/documents.sql导入数据库,并配置好以下的MySQL用户密码数据库#源定义
source mysql
{type                    = mysqlsql_host                = localhostsql_user                = rootsql_pass                = 123456sql_db                  = sphinxsql_port                = 3306sql_query_pre            = SET NAMES utf8sql_query                = SELECT id, group_id, UNIX_TIMESTAMP(date_added) AS date_added, title, content FROM documents#sql_query第一列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 #命令行查询时,从数据库读取原始数据信息
}#index定义
index mysql
{source            = mysql             #对应的source名称path            = C:/usr/local/coreseek-4.1-win32/var/data/documents #请修改为实际使用的绝对路径,例如:/usr/local/coreseek/var/...docinfo            = externmlock            = 0morphology        = nonemin_word_len        = 1html_strip                = 0#中文分词配置,详情请查看:http://www.coreseek.cn/products-install/coreseek_mmseg/#charset_dictpath = /usr/local/mmseg3/etc/ #BSD、Linux环境下设置,/符号结尾charset_dictpath = C:/usr/local/coreseek-4.1-win32/etc/        #Windows环境下设置,/符号结尾,最好给出绝对路径,例如:C:/usr/local/coreseek/etc/...charset_type        = zh_cn.utf-8
}#全局index定义
indexer
{mem_limit            = 128M
}#searchd服务定义
searchd
{compat_sphinxql_magics = 0listen                  =   9312read_timeout        = 5max_children        = 30max_matches            = 1000seamless_rotate        = 0preopen_indexes        = 0unlink_old            = 1pid_file = C:/usr/local/coreseek-4.1-win32/var/log/searchd_mysql.pid  #请修改为实际使用的绝对路径,例如:/usr/local/coreseek/var/...log = C:/usr/local/coreseek-4.1-win32/var/log/searchd_mysql.log        #请修改为实际使用的绝对路径,例如:/usr/local/coreseek/var/...query_log = C:/usr/local/coreseek-4.1-win32/var/log/query_mysql.log #请修改为实际使用的绝对路径,例如:/usr/local/coreseek/var/...binlog_path =                                #关闭binlog日志
}
复制代码

 

5) 建立索引,打一句dos命令就行。

  

  在#index定义中,设置了path的路径,在这个路径里面能够看到索引文件。

  

 

6) 打开控制台让Sphinx监听端口,接收搜索命令。

  

  searchd 可以安装成一个Windows服务,命令如下:

C:\usr\local\coreseek> C:\usr\local\coreseek\bin\searchd.exe --install --config C:\usr\local\coreseek\etc\coreseek.conf --servicename Coreseek

  这样 searchd 服务应该出现在“控制面板->系统管理->服务”的列表中了. 服务应该出现在“控制面板->系统管理->服务”的列表中了。

    删除服务的命令如下:

sc delete Coreseek

 

三、PHP代码测试

复制代码
<?php
header('Content-Type: text/html; charset=utf-8');//防止中文显示为乱码
$s = new SphinxClient;//已经引入扩展,所以不需要额外require文件了
$s->setServer("127.0.0.1", 9312);  
$s->setMatchMode(SPH_MATCH_PHRASE);  
$s->setMaxQueryTime(30);  $res = $s->query('愚人', 'mysql'); #[愚人]关键字,[mysql]数据源source  
$err = $s->GetLastError();  echo '<pre>';  
var_dump($res);  
var_dump($err);  
echo '</pre>';  
复制代码

查看到结果:

与数据库比对一下,可以看到搜索出了第一条的数据。

 

四、计算经纬度

   现在时髦的APP客户端,基本上都会涉及到一个功能,就是寻找附近的XX,在我们服务端就是需要计算经纬度距离了。原先我们的做法是在MySQL中自定义一个计算两个经纬度点距离的函数,在做查询的时候调用,现在用Coreseek可以直接调用一个方法SetGeoAnchor。

先看看Coreseek中对这个方法的说明:

原型: function SetGeoAnchor ( $attrlat, $attrlong, $lat, $long )为地理距离计算设置锚点,并且允许使用它们。$attrlat 和 $attrlong是字符串,分别指定了对应经度和纬度的属性名称。
$lat 和 $long是浮点值,指定了锚点的经度和纬度值,以角度为单位。

再看看sphinx中API的说明:

Prototype: function SetGeoAnchor ( $attrlat, $attrlong, $lat, $long )Sets anchor point for and geosphere distance (geodistance) calculations, and enable them.$attrlat and $attrlong must be strings that contain the names of latitude and longitude attributes, respectively. 
$lat and $long are floats that specify anchor point latitude and longitude, in radians.

原文说的$lat 和 $long这两个其实是弧度,而不是翻译的角度。

 

1)在做索引的时候 ,将经纬度数据源转换成弧度。 radians是MySQL中由度转化为弧度的函数。

sql_query  = SELECT id, group_id, UNIX_TIMESTAMP(date_added) AS date_added, title, content,
        radians(longtitude) as longtitude, radians(latitude) as latitude FROM documents order by id desc

2)PHP中引用方法,并可做过滤与排序,deg2rad函数将角度转换为弧度。

$lon = 121;
$lat = 31;
$s->SetGeoAnchor('latitude', 'longtitude', (float)deg2rad($lat), (float) deg2rad($lon));
$s->SetSortMode(SPH_SORT_EXTENDED, '@geodist asc'); // 按距离正向排序
//$s->SetFilterFloatRange('@geodist', 0.0, $radius); // 过滤掉大于10公里的地点

3)查看页面结果,距离大约为49749;同时我用以前的那个MySQL自定义函数,在数据库中跑了一下,距离是49704,两个结果差不多。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/541740.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

android shape.xml 属性详解

转载源:http://blog.csdn.net/harvic880925/article/details/41850723 一、简单使用 刚开始&#xff0c;就先不讲一堆标签的意义及用法&#xff0c;先简单看看shape标签怎么用。 1、新建shape文件 首先在res/drawable文件夹下&#xff0c;新建一个文件&#xff0c;命名为&#…

Linux比较大文件内容,Linux系统最大文件打开数优化,解决Too many open files报错

这是一个Linux系统常见的故障&#xff0c;网络上也能轻易的找到解决办法&#xff0c;我也只是在工作中遇到了这个问题&#xff0c;所以在博客记录下&#xff0c;以备不时之需。一、报错截图&#xff1a;图为resin的报错日志&#xff0c;很明显提示了Too many open files&#x…

Varnish缓存代理简介与配置

一、varnish原理&#xff1a;1&#xff09;Varnish简介&#xff1a;varnish缓存是web应用加速器&#xff0c;同时也作为http反向缓存代理。你可以安装varnish在任何http的前端&#xff0c;同时配置它缓存内容。与传统的 squid 相比&#xff0c;varnish 具有性能更高、速度更快、…

linux安装卸载mysql,Linux6 系列 安装、卸载mysql

Linux6 系列 安装、卸载mysqlLinux6 系列 安装、卸载mysqlLinux环境下载mysql&#xff1a;https://blog.csdn.net/weixin_40816738/article/details/90111456一、安装环境依赖&#xff1a;yum install -y cmake make gcc gcc-c libaio ncurses ncurses-devel二、安装流程1、软件…

linux14.04 Apache,Ubuntu 14.04编译安装Apache

Ubuntu下编译安装apache需要预先编译安装多个依赖件&#xff0c;包括&#xff1a;apr, apr-util,pcre,zlib-devel&#xff0c;等&#xff0c;相当麻烦&#xff0c;记录于此备查.由于Ubuntu系统默认安装时没有安装C&#xff0c;所以也需要先安装c编译需要相关的组件。[注]apt-ca…

linux dd入门,Linux基础知识:Linux中DD命令详解

1.dd命令简介功能&#xff1a;把指定的输入文件拷贝到指定的输出文件中&#xff0c;并且在拷贝过程中可以进行格式转换。可以用该命令实现DOS下的diskcopy命令的作用。先用dd命令把软盘上的数据写成硬盘的一个寄存文件&#xff0c;再把这个寄存文件写入第二张软盘上&#xff0c…

lcase和ucase_在SQL中使用UCASE(),LCASE()和MID()函数

lcase和ucaseUpper Case, Lower Case and MID functions are scalar functions which return a single value, based in the input value. 大写&#xff0c;小写和MID函数是标量函数&#xff0c;它们基于输入值返回单个值。 As you all know sometimes different databases ha…

linux ntp手动授时,关于我校NTP授时服务的使用说明

校园网用户&#xff1a;我中心于近期采购了GPS北斗授时服务设备&#xff0c;该设备可实现纯GPS模式、纯北斗模式和混合模式与卫星对时&#xff0c;同时实现对校内设备授时的功能。支持所有NTP协议的服务器、PC、嵌入式设备等&#xff0c;包括但不限于&#xff1a;Microsoft Win…

linux反序列化漏洞,思科多个产品Java反序列化漏洞(CVE-2015-6420)

思科多个产品Java反序列化漏洞(CVE-2015-6420)发布日期&#xff1a;2015-12-15更新日期&#xff1a;2015-12-17受影响系统&#xff1a;Cisco Unified ComputingCisco Voice and Unified Communications DevicesCisco Wireless描述&#xff1a;CVE(CAN) ID: CVE-2015-6420思科是…

密码学替代技术_替代技术及其类型| 密码学

密码学替代技术As we already discussed what are the Substitution techniques and one of its type Ceasar Cipher? So we are not discussing it here for that please refer to Cryptography: CeasarCipher here: Cryptography: Caesar Cipher and its Python Implementat…

Flask+uwsgi+Nginx环境搭建

2019独角兽企业重金招聘Python工程师标准>>> 开源软件准备 需要的软件列表&#xff1a; setuptools-33.1.1.zip Python-2.7.13.tgz pip-9.0.1.tar.gz nginx-1.10.3.tar.gz 软件统一上传到/usr/local/src/下&#xff0c;python是使用自己编译的。Python安装 先安装以…

ofb模式_密码学中的输出反馈模式(OFB)

ofb模式This is an output feedback (OFB) mode is similar in structure to that of CFB in Cryptography. It is the output of the encryption function that is fed back to the shift register in OFB in the cryptography, whereas in CFB in the mode of blocks, the ci…

win8编程c语言,Win8系统怎么运行C语言 win8系统运行C语言的方法

C语言是一门通用计算机编程语言&#xff0c;是提供一种能以简易的方式编译、处理低级存储器、产生少量的机器码以及不需要任何运行环境支持便能运行的编程语言&#xff0c;但是许多win8系统用户并不知道要怎么运行C语言&#xff0c;针对这个情况&#xff0c;小编就给大家分享一…

Linux sudoers文件的写法

2019独角兽企业重金招聘Python工程师标准>>> 文件的组成 sudoers文件由三部分组成&#xff1a; sudoers的默认配置&#xff0c;主要设置sudo的一些缺省值&#xff08;本文不会对这些默认配置进行介绍&#xff0c;若有兴趣可以自己man 5 sudoers然后搜defaults)alias…

设计模式(一)单例模式的七种写法

1. 饿汉模式 public class Singleton { private static Singleton instance new Singleton(); private Singleton (){}public static Singleton getInstance() { return instance; } } View Code这种方式在类加载时就完成了初始化&#xff0c;所以类加载较慢&#xff0c;…

智能关机软件 c语言,智能关机软件

智能关机软件是一款免费共享关机软件。智能关机软件不但具有定时关机、自动关机的功能&#xff0c;而且还可以进行定时提醒信息、打开文件、打开网页、重启计算机、注销用户、锁定计算机、计算机休眠、计算机待机、关闭显示器&#xff0c;并且可以进行多任务计划&#xff0c;可…

iOS开发之解决系统数字键盘无文字时delete键无法监听的技巧

最近在做用户登录获取验证码时添加图形验证码功能&#xff0c;就是只有正确输入图形验证码才能收到后台发送的短信验证码。效果如下&#xff1a; 看起来虽然是个小功能&#xff0c;但是实际操作起来&#xff0c;会发现苹果给我们留下的坑&#xff0c;当然更多的是自己给自己挖的…

连接fiddler后手机无法显示无网络

升级了fiddler到4.6版本&#xff0c;手机设置代理后提示无网络&#xff0c;试试以下解决方法&#xff1a; 1.fiddler升级后对应的.net framework也要升级&#xff0c;安装最新的.net framework 4.6&#xff0c;升级安装后&#xff0c;可以正确抓包啦 2.如果上述方法无效&#x…

android 图片叠加xml,Android实现图片叠加效果的两种方法

本文实例讲述了Android实现图片叠加效果的两种方法。&#xff0c;具体如下&#xff1a;效果图&#xff1a;第一种&#xff1a;第二种&#xff1a;第一种是通过canvas画出来的效果:public void first(View v) {// 防止出现Immutable bitmap passed to Canvas constructor错误Bit…

Win10系列:VC++ 定时器

计时器机制俗称"心跳"&#xff0c;表示以特定的频率持续触发特定事件和执行特定程序的机制。在开发Windows应用商店应用的过程中&#xff0c;可以使用定义在Windows::UI::Xaml命名空间中的DispatcherTimer类来创建计时器。DispatcherTimer类包含了如下的成员&#xf…