sphinx xmlpipe2 php,golang全文搜索--使用sphinx

不多废话,测试环境 ubuntu 13.10

安装

sudo apt-get install sphinxsearch

配置

nano /etc/sphinxsearch/sphinx.conf

# 数据源配置

source default

{

type = xmlpipe2

xmlpipe_command = /path/xmlpipe2

xmlpipe_fixup_utf8 = 1

}

# 索引配置

index default

{

type = plain

source = default

# 索引文件路径

path = /path/filename

# 不存储文档信息

docinfo = none

#最小索引词长度

min_word_len = 2

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

}

xmlpipe2的格式

...

...

...

...

只要配置文件中 xmlpipe_command 字段配置的可执行文件输出为相应的xml流即可,这样几乎适配了所有数据源

生成索引

$ indexer default

Sphinx 2.0.4-release (r3135)

Copyright (c) 2001-2012, Andrew Aksyonoff

Copyright (c) 2008-2012, Sphinx Technologies Inc (http://sphinxsearch.com)

using config file '/etc/sphinxsearch/sphinx.conf'...

indexing index 'default'...

WARNING: Attribute count is 0: switching to none docinfo

WARNING: collect_hits: mem_limit=0 kb too low, increasing to 12288 kb

collected 4 docs, 0.0 MB

sorted 0.0 Mhits, 100.0% done

total 4 docs, 47 bytes

total 0.000 sec, 54970 bytes/sec, 4678.36 docs/sec

total 2 reads, 0.000 sec, 0.0 kb/call avg, 0.0 msec/call avg

total 6 writes, 0.000 sec, 0.0 kb/call avg, 0.0 msec/call avg

查询

$ search 55

Sphinx 2.0.4-release (r3135)

Copyright (c) 2001-2012, Andrew Aksyonoff

Copyright (c) 2008-2012, Sphinx Technologies Inc (http://sphinxsearch.com)

using config file '/etc/sphinxsearch/sphinx.conf'...

index 'default': query '55 ': returned 1 matches of 1 total in 0.000 sec

displaying matches:

1. document=233221, weight=1695

words:

1. '55': 1 documents, 1 hits

配置searchd

编辑sphinx配置文件,添加:

监听地址

searchd

{

# 监听地址(Unix socket)

listen = /var/log/searchd.sock

# 日志文件

log = /var/log/searchd.log

# 查询日志

query_log = /var/log/query.log

# 客户端读取超时时间

read_timeout = 5

# 客户端请求超时时间

client_timeout = 3000

# PID 文件

pid_file = /var/log/searchd.pid

}

运行searchd

$ sudo searchd

Sphinx 2.0.4-release (r3135)

Copyright (c) 2001-2012, Andrew Aksyonoff

Copyright (c) 2008-2012, Sphinx Technologies Inc (http://sphinxsearch.com)

using config file '/etc/sphinxsearch/sphinx.conf'...

WARNING: compat_sphinxql_magics=1 is deprecated; please update your application and config

listening on UNIX socket /var/log/searchd.sock

precaching index 'default'

precached 1 indexes in 0.000 sec

验证一下状态

$ searchd --status

Sphinx 2.0.4-release (r3135)

Copyright (c) 2001-2012, Andrew Aksyonoff

Copyright (c) 2008-2012, Sphinx Technologies Inc (http://sphinxsearch.com)

using config file '/etc/sphinxsearch/sphinx.conf'...

searchd status

--------------

uptime: 7

connections: 1

maxed_out: 0

golang客户端

package main

import (

"github.com/yunge/sphinx"

"log"

)

func main() {

// 链接参数

opts := &sphinx.Options{

Socket: "/var/log/searchd.sock",

Timeout: 5000,

}

// 创建客户端

spClient := &sphinx.Client{Options: opts}

if err := spClient.Error(); err != nil {

log.Fatal(err)

}

// 打开链接

if err := spClient.Open(); err != nil {

log.Fatal(err)

}

// 获取实例信息

status, err := spClient.Status()

if err != nil {

log.Fatal(err)

}

for _, row := range status {

log.Printf("%20s:\t%s\n", row[0], row[1])

}

// 查询

res, err := spClient.Query("33", "default", "Test Query()")

if err != nil {

log.Fatal(err)

}

log.Println(res)

}

输出:

2013/12/05 01:14:55 uptime: 148

2013/12/05 01:14:55 connections: 2

2013/12/05 01:14:55 maxed_out: 0

2013/12/05 01:14:55 command_search: 0

2013/12/05 01:14:55 command_excerpt: 0

2013/12/05 01:14:55 command_update: 0

2013/12/05 01:14:55 command_keywords: 0

2013/12/05 01:14:55 command_persist: 2

2013/12/05 01:14:55 command_status: 2

2013/12/05 01:14:55 command_flushattrs: 0

2013/12/05 01:14:55 agent_connect: 0

2013/12/05 01:14:55 agent_retry: 0

2013/12/05 01:14:55 queries: 0

2013/12/05 01:14:55 dist_queries: 0

2013/12/05 01:14:55 query_wall: 0.000

2013/12/05 01:14:55 query_cpu: OFF

2013/12/05 01:14:55 dist_wall: 0.000

2013/12/05 01:14:55 dist_local: 0.000

2013/12/05 01:14:55 dist_wait: 0.000

2013/12/05 01:14:55 query_reads: OFF

2013/12/05 01:14:55 query_readkb: OFF

2013/12/05 01:14:55 query_readtime: OFF

2013/12/05 01:14:55 avg_query_wall: 0.000

2013/12/05 01:14:55 avg_query_cpu: OFF

2013/12/05 01:14:55 avg_dist_wall: 0.000

2013/12/05 01:14:55 avg_dist_local: 0.000

2013/12/05 01:14:55 avg_dist_wait: 0.000

2013/12/05 01:14:55 avg_query_reads: OFF

2013/12/05 01:14:55 avg_query_readkb: OFF

2013/12/05 01:14:55 avg_query_readtime: OFF

2013/12/05 01:14:55 &{[content] [] [] [] 1 1 0.001 [{33 1 1}] 0}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值