`
shutiao2008
  • 浏览: 211641 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

Sphinx使用入门

    博客分类:
  • db
阅读更多
搜索三大要素:数据来源、预处理、查询。
在Sphinx+MySQL的架构中,MySQL主要提供了数据来源和查询接口,真正进行全文索引建立和查询的是Sphinx。
MySQL里面存放真正的数据;Sphinx从MySQL中获取数据建立全文索引;应用程序使用相应的api与Sphinx交互以获得真正的数据(此处的api包含SQL接口、php接口,以及其他一些编程语言能够调用的接口)。

假设test库内有表test,结构如下:
CREATE TABLE `test` (
`id` bigint(20) unsigned NOT NULL AUTO_INCREMENT,
`content` varchar(20000) DEFAULT NULL,
`gmt_create` datetime DEFAULT NULL,
`v` char(100) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8
我们需要在content字段上面做全文索引。

根据以上信息配置Sphinx是一件相对容易的事情。在只涉及到单数据来源(MySQL)的情况下,我们只需要关注下面这几个参数:
source src1
{
# data source type. mandatory, no default value
# known types are mysql, pgsql, mssql, xmlpipe, xmlpipe2, odbc
type = mysql

#####################################################################
## SQL settings (for ‘mysql’ and ‘pgsql’ types)
#####################################################################

# some straightforward parameters for SQL source types
sql_host = 192.168.*.*
sql_user = realzyy
sql_pass = realzyy
sql_db = test
sql_port = 3306 # optional, default is 3306

# pre-query, executed before the main fetch query
# multi-value, optional, default is empty list of queries
#
sql_query_pre = SET NAMES utf8
# sql_query_pre = SET SESSION query_cache_type=OFF

# range query setup, query that must return min and max ID values
# optional, default is empty
#
# sql_query will need to reference $start and $end boundaries
# if using ranged query:
#
sql_query = \
SELECT id, gmt_create, content,v \
FROM test \
WHERE id>=$start AND id<=$end

sql_query_range = SELECT MIN(id),MAX(id) FROM test

# range query step
# optional, default is 1024
#
sql_range_step = 128

# UNIX timestamp attribute declaration
# multi-value (an arbitrary number of attributes is allowed), optional
# similar to integer, but can also be used in date functions
#
# sql_attr_timestamp = posted_ts
# sql_attr_timestamp = last_edited_ts
sql_attr_timestamp = gmt_create

# string ordinal attribute declaration
# multi-value (an arbitrary number of attributes is allowed), optional
# sorts strings (bytewise), and stores their indexes in the sorted list
# sorting by this attr is equivalent to sorting by the original strings
#
sql_attr_str2ordinal = v

# ranged query throttling, in milliseconds
# optional, default is 0 which means no delay
# enforces given delay before each query step
sql_ranged_throttle = 0

# document info query, ONLY for CLI search (ie. testing and debugging)
# optional, default is empty
# must contain $id macro and must fetch the document by that id
sql_query_info = SELECT * FROM test WHERE id=$id
}

因为这个表的字符集采用了utf8,所以还需要修改一下:
index test1
{
source = src1
# document source(s) to index
# multi-value, mandatory
# document IDs must be globally unique across all sources
source = src1

# index files path and file name, without extension
# mandatory, path must be writable, extensions will be auto-appended
path = /u01/sphinx/var/data/index_for_test

# document attribute values (docinfo) storage mode
# optional, default is 'extern'
# known values are 'none', 'extern' and 'inline'
docinfo = extern

# memory locking for cached data (.spa and .spi), to prevent swapping
# optional, default is 0 (do not mlock)
# requires searchd to be run from root
mlock = 0

# a list of morphology preprocessors to apply
# optional, default is empty
#
# builtin preprocessors are 'none', 'stem_en', 'stem_ru', 'stem_enru',
# 'soundex', and 'metaphone'; additional preprocessors available from
# libstemmer are 'libstemmer_XXX', where XXX is algorithm code
# (see libstemmer_c/libstemmer/modules.txt)
#
# morphology = stem_en, stem_ru, soundex
# morphology = libstemmer_german
# morphology = libstemmer_sv
morphology = none
# minimum indexed word length
# default is 1 (index everything)
min_word_len = 1

# charset encoding type
# optional, default is 'sbcs'
# known types are 'sbcs' (Single Byte CharSet) and 'utf-8'
charset_type = utf-8

# charset definition and case folding rules "table"
# optional, default value depends on charset_type
#
# defaults are configured to include English and Russian characters only
# you need to change the table to include additional ones
# this behavior MAY change in future versions
#
# '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
charset_table = 0..9, A..Z->a..z, _, a..z, U+410..U+42F->U+430..U+44F, U+430..U+44F
}
执行一下indexer创建全文索引;再执行searchd打开Sphinx的监听端口以便接收请求;最后可以用search去检测一下战果~
#indexer –all
#searchd
#search *****
分享到:
评论

相关推荐

    Sphinx入门.docx

    Sphinx入门指南 Sphinx是基于搜索引擎的一种开源全文搜索引擎,可以对大量数据进行快速搜索和索引。它支持多种数据源,包括 MySQL、PostgreSQL、Oracle 等。下面是 Sphinx 入门指南,包括安装、配置和使用 Sphinx。...

    Sphinx 在 windows 下安装使用.docx

    【Sphinx 在 Windows 下安装使用】的文档主要涵盖了在Windows操作系统上安装和配置Sphinx全文检索引擎的过程。Sphinx是一个高性能、开源的全文搜索引擎,它提供了多种编程语言的API,如PHP、Python、Perl和Ruby,...

    Sphinx 在WINDOWS和LINUX下安装入门与测试实例

    **Sphinx 在 WINDOWS 和 LINUX 下的安装入门与测试实例** Sphinx 是一款高效、全文搜索引擎,广泛用于构建网站的后台搜索功能。它支持多种数据库,包括 MySQL,提供高速索引和快速检索,使得数据搜索变得简单高效。...

    Sphinx-完整中文手册

    安装完成后,会有快速入门教程指导新用户如何快速使用。 在使用Sphinx或Coreseek进行全文检索之前,需要建立索引。索引是全文检索系统的核心,它决定了检索的效率和准确性。Sphinx支持多种数据源,包括SQL数据源...

    sphinx 文档编写工具(非搜索引擎)英文doc

    4. reStructuredText Primer(reStructuredText入门):这是Sphinx采用的标记语言入门指南。介绍文档的各个元素,比如段落、内联标记、列表、代码块、表格、超链接、标题、显式标记、指令、图片、脚注、引用、替换和...

    CoreSeek/Sphinx中文手册

    SphinxQL和API参考部分提供了详细的命令和方法参考,包括索引命令、搜索命令、拼写检查、索引信息导出工具的使用说明以及SphinxQL的语法和升级备注。 为了使搜索结果具有良好的用户体验,Sphinx提供了多种结果排序...

    sphinx4-1.0beta6-bin.zip

    Sphinx4是一个开源的、Java实现的语音识别引擎,它为开发者提供了构建语音识别应用的能力。这个"**sphinx4-1.0beta6-bin.zip**"文件是Sphinx4的1.0 beta...对于希望快速入门ASR的开发者,Sphinx4提供了一个便捷的起点。

    sphinx 参考手册和源程序

    2.5. Sphinx 快速入门教程 3. 建立索引 3.1. 数据源 3.2. 属性 3.3. 多值属性 ( MVA : multi-valued attributes) 3.4. 索引 3.5. 数据源的限制 3.6. 字符集 , 大小写转换 , 和转换表 3.7. SQL 数据源 ...

    Asphyre Sphinx 最最最初级的教程

    这个“最最最初级的教程”可能是针对那些对编程和游戏开发感兴趣的初学者,旨在帮助他们快速入门Asphyre Sphinx框架。下面我们将深入探讨Asphyre Sphinx的一些核心概念和技术。 Asphyre Sphinx是用Delphi语言编写的...

    Android上PocketSphinx语音识别编程文件+swig-1.3.40

    最后,swig-1.3.40是一个强大的工具,用于生成Java和其他语言的绑定,使得原本用C或C++编写的库(如Sphinxbase和pocketsphinx)能够在Android这样的Java平台上使用。SWIG简化了跨语言接口的编写工作,让开发者无需...

    Sphinx中文参考手册.rar

    2.5. Sphinx 快速入门教程 3. 建立索引 3.1. 数据源 3.2. 属性 3.3. 多值属性 ( MVA : multi-valued attributes) 3.4. 索引 3.5. 数据源的限制 3.6. 字符集 , 大小写转换 , 和转换表 3.7. SQL 数据源 ...

    CMU Sphinx-4应用程序编程指南

    除了使用Java之外,Sphinx-4还支持使用脚本语言进行开发,如Groovy、Python和Clojure。 - **Groovy**:一种基于Java平台的强大脚本语言,可以直接调用Java库。 - **Python**:流行的脚本语言,有广泛的社区支持。 -...

    sphinx使用及其简单配置方法

    - [快速入门](http://www.sphinx-doc.org/en/master/usage/quickstart.html) - [配置选项](http://www.sphinx-doc.org/en/master/usage/configuration.html) - [RestructuredText 指南]...

    Sphinx 2.2.5-release reference manual

    为了让用户快速入门,Sphinx的使用手册还包括了一个简短的使用教程,涵盖基础的安装和配置步骤。 ### 索引 #### 数据源 Sphinx可以从多种数据源中检索数据,包括MySQL、PostgreSQL等数据库,以及XML和TSV格式的...

    Sphinx入门和RTD线上配置

    $ brew install sphinx-doc 启动 $ sphinx-quickstart 配置 Separate source and build directories (y/n) [n]: n Project name: my-first-sphinx-project Author name(s): vincentlu Project release []: 1.0 ...

    helperScripts:这些是Pocketsphinx STT入门的一些脚本和语言模型

    辅助脚本这是对音频和Pocketsphinx文本到语音脚本进行故障排除的一系列操作。 当我创建语音助手并认为它们对其他人会有所帮助时,我已经积累了几个月的时间。 audio_test.sh将通过记录默认系统音频中的几秒模糊然后...

Global site tag (gtag.js) - Google Analytics