sphinx全文索引教程

2024-01-09 20:32
文章标签 教程 sphinx 全文索引

本文主要是介绍sphinx全文索引教程,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

英文介绍:http://www.sphinxsearch.com/docs/manual-0.9.9.html

一、首先需要在服务器上安装sphinx
在Windows上安装sphinx
    1.下载支持mysql的包  http://www.sphinxsearch.com/downloads/sphinx-0.9.9-win32.zip
    2.解压缩 sphinx-0.9.9-win32.zip 到 D:\sphinx
    3.安装sphinx服务,在命令行执行命令

 

D:\sphinx\searchd --install --config d:\sphinx\sphinx.conf --servicename SphinxSearch


    英文参照:http://www.sphinxsearch.com/docs ... #installing-windows

在Linux服务器上安装sphinx
   1.下载源码包 http://www.sphinxsearch.com/downloads/sphinx-0.9.9.tar.gz

 

$ tar xzvf sphinx-0.9.8.tar.gz
                $ cd sphinx
                $ 
./configure --prefix=/usr/local/sphinx --with-mysql=/usr/local/mysql
                $ make
                $ make install

 常见问题1

 


                
/usr/local/sphinx-0.9.9/src/sphinx.cpp:20060: undefined reference to `libiconv_open'
                /usr/local/sphinx-0.9.9/src/sphinx.cpp:20078: undefined reference to `
libiconv'
                /usr/local/sphinx-0.9.9/src/sphinx.cpp:20084: undefined reference to `libiconv_close'

                collect2
: ld returned 1 exit status
                make
[2]: *** [indexer] Error 1
                make
[2]: Leaving directory `/home/jling/sphinx-0.9.9/src'
                make[1]: *** [all] Error 2
                make[1]: Leaving directory `
/home/jling/sphinx-0.9.9/src'
                make: *** [all-recursive] Error 1

解决办法:打开configure文件,找到“#define USE_LIBICONV 1”,将注释去掉,并将1改成0。


常见问题2

 


                error 
while loading shared libraries: libmysqlclient.so.16: cannot open shared object file: No such file or directory


解决办法:

 


                
64位系统ln -s /usr/local/webserver/mysql/lib/mysql/libmysqlclient.so.16.0.0 /usr/lib64/libmysqlclient.so.16
                
32位系统ln -s /usr/local/webserver/mysql/lib/mysql/libmysqlclient.so.16.0.0 /usr/lib/libmysqlclient.so.16

 

sphinx.conf样例  

 

source main
                
{
                 type     
= mysql    #数据库类型
                 sql_host    
= 10.228.134.211 #数据库ip
                 sql_user    
= admin    #数据库用户名
                 sql_pass    
= admin    #数据库密码
                 sql_db     
= phpcms_v9   #数据库名
                 sql_port    
= 3306    # 数据库端口

  sql_query_pre = SET NAMES utf8
                 sql_query_pre 
= REPLACE INTO v9_sphinx_counter SELECT 1, MAX(searchid) FROM v9_search
                 sql_query 
= SELECT searchid, adddate, siteid, typeid, id, data FROM v9_search \
                    WHERE searchid
>=$start AND searchid<=$end
                 sql_query_range  
= SELECT 1,max_doc_id FROM v9_sphinx_counter WHERE counter_id=1
                 sql_range_step 
= 5000

  #字符串属性设置、需要过滤、排序的时候用到
                 sql_attr_uint  
= typeid
                 sql_attr_uint  
= siteid
                 sql_attr_uint  
= id
                 sql_attr_timestamp  
= adddate
                 sql_query_info  
= SELECT * FROM v9_search WHERE searchid=$id
                
}

 source delta
                
{
                 type     
= mysql    #数据库类型
                 sql_host    
= 10.228.134.211 #数据库ip
                 sql_user    
= admin    #数据库用户名
                 sql_pass    
= admin    #数据库密码
                 sql_db     
= phpcms_v9   #数据库名
                 sql_port    
= 3306    # 数据库端口

     sql_query_pre = SET NAMES utf8
                    sql_query 
= SELECT searchid, adddate, siteid, typeid, id, data FROM v9_search \
                  WHERE searchid 
>( SELECT max_doc_id FROM v9_sphinx_counter WHERE counter_id=1 )
                 sql_query_post 
= REPLACE INTO v9_sphinx_counter SELECT 1, MAX(searchid) FROM v9_search
                 
#字符串属性设置、需要过滤、排序的时候用到
                 sql_attr_uint  
= typeid
                 sql_attr_uint  
= siteid
                 sql_attr_uint  
= id
                 sql_attr_timestamp  
= adddate
                 sql_query_info  
= SELECT * FROM v9_search WHERE searchid=$id
                
}

 #主索引
                index main
                
{
                 source 
= main
                 
# 放索引的目录
                 path 
= D:\sphinx\data\main
                 
# 编码
                 charset_type 
= utf-8
                 
# 指定utf-8的编码表
                 charset_table 
= 0..9, A..Z->a..z, _, a..z, U+410..U+42F->U+430..U+44F, U+430..U+44F
                 
# 简单分词,只支持0和1,如果要搜索中文,请指定为1
                 ngram_len 
= 1
                 
# 需要分词的字符,如果要搜索中文,去掉前面的注释
                 ngram_chars   
= U+3000..U+2FA1F
                
}

 #增量索引
                index delta
                
{
                    source 
= delta
                    path 
= D:\sphinx\data\delta
                 
# 编码
                 charset_type 
= utf-8
                 
# 指定utf-8的编码表
                 charset_table 
= 0..9, A..Z->a..z, _, a..z, U+410..U+42F->U+430..U+44F, U+430..U+44F
                 
# 简单分词,只支持0和1,如果要搜索中文,请指定为1
                 ngram_len 
= 1
                 
# 需要分词的字符,如果要搜索中文,去掉前面的注释
                 ngram_chars   
= U+3000..U+2FA1F
                
}
                 

 indexer
                
{
                 mem_limit    
= 128M
                
}

 searchd
                
{
                 port     
= 9312
                 log      
= D:\sphinx\data\phpcms\searchd.log
                 query_log    
= D:\sphinx\data\phpcms\query.log
                 read_timeout   
= 5
                 max_children   
= 30
                 pid_file    
= D:\sphinx\data\phpcms\searchd.pid
                 max_matches    
= 2000
                 seamless_rotate   
= 0
                 preopen_indexes   
= 0
                 unlink_old    
= 1
                
}

 

附件:设置计划任务更新索引
1.windows下
需要设置计划任务
#凌晨4点合并索引,执行merge.bat
#其余时间每分钟更新索引,执行delta.bat
 
merge.bat  


       


                
@ECHO off

                D
:\sphinx\bin\indexer.exe --config D:\sphinx\sphinx.conf --merge main delta --rotate

                echo indexing
, window will close when complete

                 

 

delta.bat

 


                
@ECHO off
                D
:\sphinx\bin\indexer.exe --config D:\sphinx\sphinx.conf delta --rotate
                echo indexing
, window will close when complete


2.linux下编辑定时任务 crontab -e

 


                
#凌晨4点合并索引,其余时间每分钟更新索引
                
* 0-3 * * * /usr/local/sphinx/bin/indexer --config /usr/local/sphinx/etc/sphinx.conf delta --rotate
                
* 6-23 * * * /usr/local/sphinx/bin/indexer --config /usr/local/sphinx/etc/sphinx.conf delta --rotate
                
0 4 * * * /usr/local/sphinx/bin/indexer --config /usr/local/sphinx/etc/sphinx.conf --merge main delta --rotate


各种路径、权限需要应用所在服务器一致,如:
sphinx.conf 中需要配置
sql_host 数据库主机地址
sql_user 数据库用户名
sql_pass 数据库密码
sql_db 数据库名
sql_port 数据库端口
phpcms表前缀样例中为phpcms_
索引路径 D:\sphinx\data\delta

phpcmsv9_withsphinx.zip


文章来源:  http://v9.help.phpcms.cn/html/2010/search_0919/35.html

这篇关于sphinx全文索引教程的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!


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

相关文章

Java Spring 中的监听器Listener详解与实战教程

《JavaSpring中的监听器Listener详解与实战教程》Spring提供了多种监听器机制,可以用于监听应用生命周期、会话生命周期和请求处理过程中的事件,:本文主要介绍JavaSprin... 目录一、监听器的作用1.1 应用生命周期管理1.2 会话管理1.3 请求处理监控二、创建监听器2.1 Ser

MySQL 安装配置超完整教程

《MySQL安装配置超完整教程》MySQL是一款广泛使用的开源关系型数据库管理系统(RDBMS),由瑞典MySQLAB公司开发,目前属于Oracle公司旗下产品,:本文主要介绍MySQL安装配置... 目录一、mysql 简介二、下载 MySQL三、安装 MySQL四、配置环境变量五、配置 MySQL5.1

MQTT SpringBoot整合实战教程

《MQTTSpringBoot整合实战教程》:本文主要介绍MQTTSpringBoot整合实战教程,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考... 目录MQTT-SpringBoot创建简单 SpringBoot 项目导入必须依赖增加MQTT相关配置编写

在Java中基于Geotools对PostGIS数据库的空间查询实践教程

《在Java中基于Geotools对PostGIS数据库的空间查询实践教程》本文将深入探讨这一实践,从连接配置到复杂空间查询操作,包括点查询、区域范围查询以及空间关系判断等,全方位展示如何在Java环... 目录前言一、相关技术背景介绍1、评价对象AOI2、数据处理流程二、对AOI空间范围查询实践1、空间查

Logback在SpringBoot中的详细配置教程

《Logback在SpringBoot中的详细配置教程》SpringBoot默认会加载classpath下的logback-spring.xml(推荐)或logback.xml作为Logback的配置... 目录1. Logback 配置文件2. 基础配置示例3. 关键配置项说明Appender(日志输出器

Kali Linux安装实现教程(亲测有效)

《KaliLinux安装实现教程(亲测有效)》:本文主要介绍KaliLinux安装实现教程(亲测有效),具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、下载二、安装总结一、下载1、点http://www.chinasem.cn击链接 Get Kali | Kal

Web技术与Nginx网站环境部署教程

《Web技术与Nginx网站环境部署教程》:本文主要介绍Web技术与Nginx网站环境部署教程,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、Web基础1.域名系统DNS2.Hosts文件3.DNS4.域名注册二.网页与html1.网页概述2.HTML概述3.

spring security 超详细使用教程及如何接入springboot、前后端分离

《springsecurity超详细使用教程及如何接入springboot、前后端分离》SpringSecurity是一个强大且可扩展的框架,用于保护Java应用程序,尤其是基于Spring的应用... 目录1、准备工作1.1 引入依赖1.2 用户认证的配置1.3 基本的配置1.4 常用配置2、加密1. 密

WinForms中主要控件的详细使用教程

《WinForms中主要控件的详细使用教程》WinForms(WindowsForms)是Microsoft提供的用于构建Windows桌面应用程序的框架,它提供了丰富的控件集合,可以满足各种UI设计... 目录一、基础控件1. Button (按钮)2. Label (标签)3. TextBox (文本框

C#实现访问远程硬盘的图文教程

《C#实现访问远程硬盘的图文教程》在现实场景中,我们经常用到远程桌面功能,而在某些场景下,我们需要使用类似的远程硬盘功能,这样能非常方便地操作对方电脑磁盘的目录、以及传送文件,这次我们将给出一个完整的... 目录引言一. 远程硬盘功能展示二. 远程硬盘代码实现1. 底层业务通信实现2. UI 实现三. De