Mac下Sphinx安装

一、安装Sphinx
1、下载Sphinx相应的版本 (http://sphinxsearch.com/downloads/archive/
2、命令:tar zxvf +压缩包文件名 解压相应的文件
3、进入Sphinx版本文件 编译安装:

  • ./configure --prefix=/data/app/sphinx --with-mysql --with-python --enable-id64

  • 注意编译扩展注意路径:

1. --prefix= (php安装路径,注意要先创建文件并且更改相应的文件权限, 修改组用户权限命令sudo chmod –R :staff+文件名)

4、make
5、make install

二、配置.conf文件
1、cd /data/app/sphinx/etc
2、touch sphinx.conf
注意:sphinx.conf.dist是配置模板,可以使用cp sphinx.conf.dist sphinx.conf然后在sphinx.conf上修改配置,或者直接新建sphinx.conf文件

* 附加sphinx.conf配置
```
source src1
{
	# 数据源类型 mysql,pgsql,mssql,xmlpipe,xmlpipe2,odbc
	type			= mysql
	# -------------------------连接sql数据源的一些配置-------------------------
	sql_host		= localhost	###### mysql主机
	sql_user		= root		###### mysql用户名
	sql_pass		= root		###### mysql密码
	sql_db			= browser	###### mysql数据库名
	sql_port		= 3306		###### optional, default is 3306 mysql端口

	#-----------------------------sql 相关配置-----------------------------
	sql_query		= \
		SELECT Id, UserAgent, Language, Languages, Platform, Plugins, Vendor, Product, MaxTouchPoints, DevicePixelRatio, Width, Height UNIX_TIMESTAMP(CreateTime) AS CreateTime FROM brow

	# uint无符号整型属性
	sql_attr_uint		= Id

	# 布尔值属性
	# sql_attr_bool     = is_deleted

	# 长整型属性(有负数用 bigint)
	# sql_attr_bigint       = my_bigint_id

	#----------------------------字段属性的配置(用于过滤和排序)----------------------------
	# 时间戳属性,经常被用于做排序
	sql_attr_timestamp	= CreateTime

	# 字符串排序属性。一般我们按照字符串排序的话,我们会将这个字符串存下来进入到索引中,然后在查询的时候比较索引中得字符大小进行排序。 
	# 但是这个时候索引就会很大,于是我们就想到了一个方法,我们在建立索引的时候,先将字符串值从数据库中取出,暂存,排序。 
	# 然后给排序后的数组分配一个序号,然后在建立索引的时候,就将这个序号存入到索引中去。这样在查询的时候也就能完成字符串排序的操作。 
	# 这,就是这个字段的意义。 
	# sql_attr_str2ordinal = author_name 

	# 浮点数属性 
	# sql_attr_float = lat_radians 
	# sql_attr_float = long_radians 

	# 字符串属性 
	# sql_attr_string = stitle 
	
	# 文档词汇数记录属性。比如下面就是在索引建立的时候增加一个词汇数的字段 
	# sql_attr_str2wordcount = stitle
}


index brow
{
	# 索引类型,包括有plain,distributed和rt。分别是普通索引/分布式索引/增量索引。默认是plain。
    type          = plain

    # 索引数据源
	source			= src1

	# 索引文件存放路径
	path			= /data/app/sphinx/var/data/brow

	
	# 缓冲内存锁定。
    # searchd会讲spa和spi预读取到内存中。但是如果这部分内存数据长时间没有访问,则它会被交换到磁盘上。
    # 设置了mlock就不会出现这个问题,这部分数据会一直存放在内存中的。
    mlock            = 0

	# 词形处理器
    # 词形处理是什么意思呢?比如在英语中,dogs是dog的复数,所以dog是dogs的词干,这两个实际上是同一个词。
    # 所以英语的词形处理器会讲dogs当做dog来进行处理。
    morphology        = 

    # 最小索引词长度,小于这个长度的词不会被索引。
    min_word_len        = 1

    # html标记清理,是否从输出全文数据中去除HTML标记。
    html_strip        = 0

    # 字符表和大小写转换规则
    # 'sbcs' default value is 单字节字符集
    # charset_table = 0..9, A..Z->a..z, _, a..z, U+A8->U+B8, U+B8, U+C0..U+DF->U+E0..U+FF, U+E0..U+FF 
    # 'utf-8' default value is utf-8字符集
    charset_table = 0..9, A..Z->a..z, _, a..z, U+410..U+42F->U+430..U+44F, U+430..U+44F

    # min_prefix_len,min_infix_len,prefix_fields,infix_fields都是在enable_star开启的时候才有效果。
    # 最小前缀索引长度
    # 为什么要有这个配置项呢?
    # 首先这个是当启用通配符配置启用的前提下说的,前缀索引使得一个关键词产生了多个索引项,导致索引文件体积和搜索时间增加巨大。
    # 那么我们就有必要限制下前缀索引的前缀长度,比如example,当前缀索引长度设置为5的时候,它只会分解为exampl,example了。
     min_prefix_len        = 0
    # 最小索引中缀长度。理解同上。
    # min_infix_len        = 0
    ## 前缀索引和中缀索引字段列表。并不是所有的字段都需要进行前缀和中缀索引。
    # prefix_fields        = filename
    # infix_fields        = url, domain

    # N-Gram索引的分词技术
    # N-Gram是指不按照词典,而是按照字长来分词,这个主要是针对非英文体系的一些语言来做的(中文、韩文、日文)
    # 对coreseek来说,这两个配置项可以忽略。
     ngram_len        = 1
     ngram_chars      = U+3000..U+2FA1F
}


indexer
{
	# 建立索引的时候,索引内存限制
	mem_limit		= 128M
}


searchd
{
 	# 监听端口
	listen			= 9312
	listen			= 9306:mysql41

	# 监听日志路径
	log			= /data/app/sphinx/var/log/searchd.log

	# 查询日志路径
	query_log		= /data/app/sphinx/var/log/query.log

	# 客户端读超时时间
	read_timeout		= 5

	# 客户端持久时间
	client_timeout		= 300

	# 并行执行搜索的数目
    max_children        = 30

	#进程 pid 文件
	pid_file		= /data/app/sphinx/var/log/searchd.pid

	#当进行索引轮换的时候,可能需要消耗大量的时间在轮换索引上。
   	#启动了无缝轮转,就以消耗内存为代价减少轮转的时间
	seamless_rotate		= 1

	#索引预开启,强制重新打开所有索引文件
	preopen_indexes		= 1

	#索引轮换成功之后,是否删除以.old为扩展名的索引拷贝
	unlink_old		= 1

	#多处理模式(MPM)。 可选项;可用值为none、fork、prefork,以及threads。 默认在Unix类系统为form,Windows系统为threads。
	workers			= threads # for RT to work

	binlog_path		= /data/app/sphinx/var/data
}

```

三、 生成索引
1、/data/app/sphinx/bin/indexer --all

四、 打开 sphinx 进程
1、/data/app/sphinx/bin/searchd

原创文章 5 获赞 4 访问量 320

猜你喜欢

转载自blog.csdn.net/weixin_46513874/article/details/105296105
今日推荐