不多废话,测试环境 `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 ] 0}

api参考 http://gowalker.org/github.com/yunge/sphinx

sphinx配置参考 http://www.coreseek.cn/docs/coreseek_4.1-sphinx_2.0.1-beta.html

golang全文搜索--使用sphinx的更多相关文章

  1. MySQL+Sphinx实现全文搜索

    最近在做一个搜索引擎,主要是对图书方面的对象级的搜索,首先来了解下Sphinx吧. 它能够提高你的查询的速度,这个不是一般的快. Sphinx是一个基于SQL的全文检索引擎,可以结合MySQL,Pos ...

  2. mac 下 sphinx + mysql + php 实现全文搜索(xampp)(3)sphinx 的配置项解析

    source:数据的来源,数据是从什么地方来的. index:索引,当有数据源之后,从数据源处构建索引.索引实际上就是相当于一个字典检索.有了整本字典内容以后,才会有字典检索. searchd:提供搜 ...

  3. ubuntu上 安装 基于sphinx 的 coreseek 全文搜索

    原生sphinx不支持中文, sphinx-for-chinese匹配中文时也不返回结果 ,真纠结,  最好试了 coreseek,这个能正确返回结果了, 所以记录一下 1 http://www.co ...

  4. php+中文分词scws+sphinx+mysql打造千万级数据全文搜索

    转载自:http://blog.csdn.net/nuli888/article/details/51892776 Sphinx是由俄罗斯人Andrew Aksyonoff开发的一个全文检索引擎.意图 ...

  5. [转]Sphinx+Mysql+中文分词安装-实现中文全文搜索

    From : http://blog.csdn.net/lgm252008/article/details/5373436 1.什么是SphinxSphinx 是一个在GPLv2 下发布的一个全文检索 ...

  6. window环境下,php+sphinx+coreseek实现简单的中文全文搜索

    就以我个人理解来说,sphinx其实是介于客户端和mysql之间的一个索引表,把数据库的没一条记录假设为文档,那么这个索引表其实保存的就是这条记录的关键词及其对应的文档id 1.sphinx的安装 下 ...

  7. coreseek实战(三):全文搜索在php中应用(使用api接口)

    coreseek实战(三):全文搜索在php中应用(使用api接口) 这一篇文章开始学习在php页面中通过api接口,使用coreseek全文搜索. 第一步:综合一下前两篇文章,coreseek实战( ...

  8. MySQL 全文搜索支持, mysql 5.6.4支持Innodb的全文检索和类memcache的nosql支持

    背景:搞个个人博客的全文搜索得用like啥的,现在mysql版本号已经大于5.6.4了也就支持了innodb的全文搜索了,刚查了下目前版本号都到MySQL Community Server 5.6.1 ...

  9. MySQL 全文搜索支持

    MySQL 全文搜索支持 从MySQL 4.0以上 myisam引擎就支持了full text search 全文搜索,在一般的小网站或者blog上可以使用这个特性支持搜索. 那么怎么使用了,简单看看 ...

随机推荐

  1. MongoDB 3.2 在windows上的安装

    翻译自 https://docs.mongodb.org/master/tutorial/install-mongodb-on-windows/ 在windows上安装 MongoDB 平台支持:从M ...

  2. python中xrange和range的异同

    本文章系转载,原文来源不详. range    函数说明:range([start,] stop[, step]),根据start与stop指定的范围以及step设定的步长,生成一个序列.range示 ...

  3. ES6 fetch函数与后台交互

    最近在学习react-native,遇到调用后端接口的问题.看了看官方文档,推荐使用es6的fetch来与后端进行交互,在网上找了一些资料.在这里整理,方便以后查询. 1.RN官方文档中,可使用XML ...

  4. 大熊君说说JS与设计模式之------策略模式Strategy

    一,总体概要 1,笔者浅谈 策略模式,又叫算法簇模式,就是定义了不同的算法,并且之间可以互相替换,此模式让算法的变化独立于使用算法的客户. 策略模式和工厂模式有一定的类似,策略模式相对简单容易理解,并 ...

  5. 结对实验报告-android计算器设计

     一:引言  目前手机可以说是普及率非常高的电子设备了,由于其便于携带,使用方便,资费适中等等原因,现在手机已经在一定程度开始代替固定电话的通话功能,以及一些原来电脑软件上的功能了.手机上的软件也随着 ...

  6. sqlserver 链接 ODBC 访问 MySql

    环境:windows 2008 + sqlserver 2008 一 安装 mysql-connector-odbc-5.2.5-winx64.msi 必须安装5.2.5,安装mysql-connec ...

  7. Unity开发游戏 flapybird 无广告老马版分享

    Flapybird确实是一款非常好玩的游戏,但是上手难度比较大.经过老马模仿加工,把游戏难度降低,而且不加入任何广告. 特此分享.下载地址:http://files.cnblogs.com/fly_d ...

  8. load css use javascript

    var $ = document; // shortcut var cssId = 'myCss'; // you could encode the css path itself to genera ...

  9. [ThingWorx] Install PostgreSQL Issue

    ThingWorx application need PostgreSQL, I try configurate it in macbook. The first step is install Po ...

  10. C#与数据库访问技术总结(十)之添加&删除

    说明:上一篇文章写了更新数据,接下来就是添加和删除数据了. 添加记录 从程序员的角度看,向数据库中添加新的记录与更改现有记录没有任何区别. 为SQL INSERT命令或者存储过程创建一个Command ...