Coreseek开源中文检索引擎-Sphinx中文版

本文详细介绍了如何配置和应用实时索引系统,包括索引的实时定义、内存设置、数据库连接、数据查询与更新流程,以及PHP测试程序实现。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

实施索引配置:

#RT实时索引配置,详情请查看:http://www.coreseek.cn/products-install/rt-indexes/

#RT实时索引定义
index rtindex
{
    type                    = rt
    path            = var/data/rtindex #请修改为实际使用的绝对路径,例如:/usr/local/coreseek/var/...
    docinfo            = extern
    mlock            = 0
    morphology        = none
    min_word_len        = 1
    html_strip                = 0

    #中文分词配置,详情请查看:http://www.coreseek.cn/products-install/coreseek_mmseg/
    #charset_dictpath = /usr/local/mmseg3/etc/ #BSD、Linux环境下设置,/符号结尾
    charset_dictpath = etc/                             #Windows环境下设置,/符号结尾,最好给出绝对路径,例如:C:/usr/local/coreseek/etc/...
    charset_type        = zh_cn.utf-8
    
    #RT实时索引字段配置,详情请查看:http://www.coreseek.cn/products-install/rt-indexes/
    #字段设置顺序:field, uint, bigint, float, timestamp, string;顺序不可颠倒,否则产生混乱
    #使用后,不可更改字段设置,除非删除所有索引文件重新建立,否则产生混乱

    #文档编号字段
    #id                                               #系统自动处理

    #全文索引字段
    rt_field                  = title               #全文索引字段
    rt_field                  = content         #全文索引字段

    #属性字段
    rt_attr_uint            = groupid
    rt_attr_bigint         = biguid
    rt_attr_float           = score
    rt_attr_timestamp  = date_added

    #存储内容字段
    rt_attr_string          = author          #存储author的内容

    #已设置全文索引,并需要同时存储内容的字段
    rt_attr_string          = title              #同时存储title的内容
    rt_attr_string          = content        #同时存储content的内容

    #RT实时索引内存设置
    rt_mem_limit = 512M
}

#searchd服务定义
searchd
{
    listen                  =   9312
    listen                  = localhost:9306:mysql41    #MySQL 协议支持与SphinxQL,详情请查看:http://www.coreseek.cn/docs/coreseek_3.2-sphinx_0.9.9.html#sphinxql
    read_timeout        = 5
    max_children        = 30
    max_matches            = 1000
    seamless_rotate        = 0
    preopen_indexes        = 0
    unlink_old            = 1
    pid_file = var/log/searchd_rtindex.pid  #请修改为实际使用的绝对路径,例如:/usr/local/coreseek/var/...
    log = var/log/searchd_rtindex.log        #请修改为实际使用的绝对路径,例如:/usr/local/coreseek/var/...
    query_log = var/log/query_rtindex.log #请修改为实际使用的绝对路径,例如:/usr/local/coreseek/var/...
    binlog_path = var/log/rtindex/       #请修改为实际使用的绝对路径,例如:/usr/local/coreseek/var/...
    binlog_flush = 2
    binlog_max_log_size = 16M
}

PHP测试程序:

<?php
// --------------------------------------------------------------------------
// File name   : test_coreseek_rtindex.php
// Description : coreseek中文全文检索系统实时索引测试程序
// Requirement : PHP5 (http://www.php.net)
//
// Copyright(C), HonestQiao, 2011, All Rights Reserved.
//
// Author: HonestQiao (honestqiao@gmail.com)
//
// 最新使用文档,请查看:http://www.coreseek.cn/products/products-install/
//
// --------------------------------------------------------------------------

#连接到实时索引,使用MySQL41协议
$link = mysql_connect('localhost:9306') or die('connect bad');
if (!$link) {
    echo mysql_errno() . ": " . mysql_error(). "\n";
    exit;
}
else
{
    echo "搜索服务:连接成功\n";
}

#查询id为1的文档
$id=1;
$query=mysql_query("SELECT * FROM rtindex WHERE id=$id");
if(mysql_errno())
{
    echo mysql_errno() . ": " . mysql_error(). "\n";
    exit;
}
else
{
    echo "查询数据:查询成功\n";
}

if(mysql_num_rows($query)){
    echo "查询数据:id为 $id 的数据存在\n";
    while($row=mysql_fetch_array($query,MYSQL_ASSOC))
    {
        printf("标题:%s\n",$row['title']);
    }
}
else
{
    echo "新增数据:插入id为 $id 的数据\n";

    $title = '愚人节最佳蛊惑爆料 谷歌300亿美元收购百度';
    $content = '据国外媒体报道,谷歌将巨资收购百度......今天看来,“百度一下”已经成为3亿多中国网民的网络生存法则,而直到今天环视全球,真正能像中国一样,拥有自己独立搜索引擎的只有4个国家!......';
    $groupid = 1;
    $biguid = '12345678901234';
    $score = 12.34;
    $date_added = time();
    $author = '知名编辑';

    //主键id,需要自己设置,不会自动生成或者递增(AUTO_INCREMENT)
    $content = mysql_escape_string($content);
    mysql_query($sql="INSERT INTO rtindex(id,title,content,groupid,biguid,score,date_added,author) VALUES ( $id, '$title', '$content', $groupid,$biguid,$score,$date_added,'$author')");
    if(mysql_errno())
    {
        echo mysql_errno() . ": " . mysql_error(). "\n";
        echo $sql;
        exit;
    }
    else
    {
        echo "新增数据:插入成功\n";
    }
}

echo "\n全文检索:\n";
$query=mysql_query("SELECT * FROM rtindex WHERE MATCH('网络搜索')");
if(mysql_errno())
{
    echo mysql_errno() . ": " . mysql_error(). "\n";
    exit;
}
else
{
    echo "搜索数据:搜索成功\n";
}
while($row=mysql_fetch_array($query,MYSQL_ASSOC))
{
    print_r($row);
}

echo "搜索数据:状态获取\n";
$query=mysql_query("SHOW META");
if(mysql_errno())
{
    echo mysql_errno() . ": " . mysql_error(). "\n";
    exit;
}
else
{
    echo "搜索数据:状态获取成功\n";
}
while($row=mysql_fetch_array($query,MYSQL_NUM))
{
    printf("%s\t%s\n",$row[0],$row[1]);
}


本文档介绍Sphinx4在Windows下的中文训练过程及注意事项,与本文档配套的是我自己的训练实例bergtrain和用到的软件。 本文档编写日期 2013-04-23 1、为什么要训练? sphinx4目前的版本中仅提供了英文等语音识别库。中文的库是PTM或semi类型的,在java版sphinx中无法使用。 2、Sphinx的训练指哪些内容? 在Sphinx中有语言模型、声学模型等概念,如果你不想了解这些,请参考以下内容: a1、中文每个字的标准发音已经有一个较为全面的文件进行了标注 这个文件就是zh_broadcastnews_utf8.dic(下称这类文件为发音字典),在sphinx网站上可以下载,我们也包含了它。 下面是该文件的片断,它用类似拼音的方式标注了每个字或词的发音。 昌 ch ang 昌北 ch ang b ei 昌必 ch ang b i 昌都 ch ang d u 昌赫 ch ang h e a2、需要告诉sphinx我们经常使用的字、词是哪些,它们出现的频率如何 由于开放式语音识别尚难实现,所以sphinx实际上只能较好的处理相对小的语言集合。 因此,针对特定的领域,告诉sphinx该领域的词汇和各词出现的频率将极大提高识别率。 a3、需要告诉sphinx每个字、词的真正读音 发音字典告诉sphinx每个字的标准读音,但面对的说话人往往不会以标准读音来朗读。 因此sphinx需要学习说话人的“口音”。 如果训练时的读者发音比较标准,则sphinx能“举一反三”,识别其他不那么标准的读者的语音。 推荐的做法是训练一些典型的口音:标准男、女声,童音,最后再考虑特定用户的口音。 3、如何准备训练内容所需的原料? 需要准备两大内容:1)文本语料文件,2)语料录音文件。 文本语料文件给出2.a2中需要的内容,在bergtrain的etc文件下的berginput.txt文件就是一个预料文件。 它以行为单位,给出了150个中文句子。 语料录音文件是根据文本语料文件,朗读它的每行/句话,保存到每一个语音文件即可。 语料文件中的语句应该尽量选择领域相关的,在覆盖领域内名词的前提下,覆盖尽可能多的通用词汇。 4、训练环境及注意事项 本文的训练软硬件如下: 硬件:T60P笔记本,机器自带录音设备;操作系统为Win7 32位。 软件:Sphinx cmuclmtk-0.7-win32.zip pocketsphinx-0.8-win32.zip sphinxbase-0.8-win32.zip sphinxtrain-1.0.8-win32.zip sphinx4-1.0beta6-bin.zip,用于编写java版的识别软件所需的库 脚本执行软件 ActivePerl-5.16.3.1603-MSWin32-x86-296746.msi ActivePython-2.7.2.5-win32-x86.msi 录音和处理软件 audacity-win-2.0.3rc1.zip,可进行录音和声音文件处理(如降噪),免费软件 FairStars.zip,可进行批量录音(V3.5绿色版) 文本编辑软件UltraEdit,UltraEdit-32.rar绿色版 注意: 文件格式 语料文件必须使用UltraEdit进行编辑, 在编辑后,使用 文件-转换-ASCII转UTF-8(UNICODE编辑),指定文件中的中文使用utf8编码。 在保存前,设置格式如下: 换行符:UNIX终束符 - LF 指定文件中的回车/换行符为编码0A的换行符 格式:UTF-8 - 无BOM 每个文件的末尾必须有一个回车! 这个回车将在保存时被替换为编码0A的换行符,训练脚本需要这个符号来确认文件的结束。 录音文件 如果你不希望去编辑训练中的配置文件,则在使用FairStars录音时作如下设定: 进入菜单和对话框 选项-显示录音选项-编码-WMA, 设定:采样率(16000Hz)、通道(单声道)、比特率(16Kbps) 5、训练步骤 下面逐步从零开始进行训练 5.1 软件环境的安装 将本文档所在的文件夹解压或拷贝到d:\,即本文档路径是d:\sphinxtrain\Sphinx中文训练教程.txt 1)点击安装ActivePerl-5.16.3.1603-MSWin32-x86-296746.msi和ActivePython-2.7.2.5-win32-x86.msi; 2)解压Sphinx中除sphinx4-1.0beta6-bin.zip外的压缩文件到d:\sphinxtrain下
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值