使用coreseek完成php查询

本文整理了如何使用php进行查询,并整理csft.conf的配置文件。

查看服务状态
ps -ef|grep searchd

##以下为正常开启搜索服务时的提示信息:(csft-4.0版类似)
/usr/local/coreseek/bin/searchd -c /usr/local/coreseek/etc/csft.conf

##如要停止搜索服务,请使用
/usr/local/coreseek/bin/searchd -c /usr/local/coreseek/etc/csft.conf --stop

##如要已启动服务,要更新索引,请使用
/usr/local/coreseek/bin/indexer -c /usr/local/coreseek/etc/csft.conf --all --rotate

1,安装(略)

2,导入mysql数据库:

/*
Navicat MySQL Data Transfer

Date: 2017-07-02 13:10:34
*/

SET FOREIGN_KEY_CHECKS=0;

-- ----------------------------
-- Table structure for documents
-- ----------------------------
DROP TABLE IF EXISTS `documents`;
CREATE TABLE `documents` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `group_id` int(11) NOT NULL,
  `date_added` datetime NOT NULL,
  `title` varchar(255) CHARACTER SET utf8 DEFAULT NULL,
  `content` text NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=5 DEFAULT CHARSET=utf8mb4;

-- ----------------------------
-- Records of documents
-- ----------------------------
INSERT INTO `documents` VALUES (‘1‘, ‘1‘, ‘2017-06-06 21:45:58‘, ‘中国‘, ‘中国真美,地大物博‘);
INSERT INTO `documents` VALUES (‘2‘, ‘1‘, ‘2017-06-06 21:45:58‘, ‘中国美食‘, ‘台北小吃,各地美食‘);
INSERT INTO `documents` VALUES (‘3‘, ‘2‘, ‘2017-06-06 21:45:58‘, ‘美女之家‘, ‘美女之国‘);
INSERT INTO `documents` VALUES (‘4‘, ‘2‘, ‘2017-06-06 21:45:58‘, ‘hello‘, ‘this is to test groups‘);

3,建立索引:

/usr/local/coreseek/etc/csft.conf的配置如下:

source src1{
        type = mysql
        sql_host = 127.0.0.1
        sql_user =root
        sql_pass =
        sql_db = test
        sql_port = 3306
        sql_query_pre = SET NAMES utf8
        sql_query        =         SELECT id, group_id, UNIX_TIMESTAMP(date_added) AS date_added, title, content         FROM documents
        sql_attr_uint        = group_id
        sql_attr_timestamp = date_added
        sql_query_info_pre = SET NAMES utf8
}

index src1{
        source = src1
        path = /usr/local/coreseek/var/data/test1
        docinfo = extern
        mlock =0
        morphology = none
        min_word_len =1
        html_strip =0

        charset_type = zh_cn.utf-8
        charset_dictpath = /usr/local/mmseg3/etc/
        #charset-table = 0..9, A..Z->a..z, _, a..z, U+410..U+42F->U+430..U+44F, U+430..U+44F
        #ngram_len = 1
        #ngram_chars = U+3000..U+2FA1F
}

searchd{
        listen = 9312
        listen = 9306:mysql41
        read_timeout =5
        max_children = 30
        max_matches = 1000
        seamless_rotate = 0
        preopen_indexes = 0
        unlink_old = 1
        pid_file = /usr/local/coreseek/var/log/searchd.pid
        log = /usr/local/coreseek/var/log/searchd.log
        query_log = /usr/local/coreseek/var/log/query.log
}

4,使用php进行查询

<?php
$t = new SphinxSearch();
$t->index();

class SphinxSearch
{
    public function index()
    {
        header("Content-type: text/html; charset=utf-8");
        require("sphinxapi.php");
        define(‘INDEX_SRC1‘, ‘src1‘);

        $cl = new SphinxClient();

        $cl->SetServer("127.0.0.1", 9312);
        $cl->SetArrayResult(true);

        $keyword = "hello";

        $result = $cl->query($keyword, INDEX_SRC1);
        $matches = isset($result[‘matches‘]) ? $result[‘matches‘] : ‘‘;
        if (is_array($matches)) {
            foreach ($matches as $v) {
                $ids[] = $v[‘id‘];
            }
        } else {
            print("<pre>");
            print $cl->GetLastError();
            print $cl->GetLastWarning();
            //print "没找到了亲~";
            print("<pre>");
            return;
        }
        $ids = implode(‘,‘, $ids);

//拿着id ,拉库
        $link = mysql_connect(‘127.0.0.1‘, ‘root‘, ‘password‘) or die(‘mysql link fail!‘);
        mysql_select_db(‘test‘, $link);
        mysql_query("SET NAMES UTF8");

        $sql = "select * from documents where id in({$ids})";
        $result = mysql_query($sql, $link);

        $data = array();
        while ($row = mysql_fetch_assoc($result)) {
            $data[] = $row;
        }
        mysql_close($link);

// 关键字高亮
        $p_titles = array();
        $p_contents = array();

        $newData=array();
        foreach ($data as $key => $value) {
            $newData[$key][‘title‘]=$this->makeHighLight($keyword,$value[‘title‘]);
            $newData[$key][‘content‘]=$this->makeHighLight($keyword,$value[‘content‘]);
        }

        var_dump($newData);
    }

    public function makeHighLight($keyword,$param)
    {
        $param = str_replace($keyword,
                "<font style=‘color:#FD2C3F;‘>" . $keyword . "</font>", $param);
        return $param;
    }

}

?>
时间: 2024-10-19 09:18:55

使用coreseek完成php查询的相关文章

sphinx (coreseek)区段查询实例

首先需要知道区段查询的定义: 索引系统需要通过主查询来获取全部的文档信息,一种简单的实现是将整个表的数据读入内存,但是这可能导致整个表被锁定并使得其他操作被阻止(例如:在MyISAM格式上的INSERT操作),同时,将浪费大量内存用于存储查询结果,诸如此类的问题吧. 为了避免出现这种情况,CoreSeek/Sphinx支持一种被称为 区段查询的技术. 首先,CoreSeek/Sphinx从数据库中取出文档ID的最小值和最大值,将由最大值和最小值定义自然数区间分成若干份,一次获取数据,建立索引.现

coreseek 安装及使用方法详解

coreseek 安装及使用 一般站点都需要搜索功能,如果是php+mysql站点,建议选择coreseek,如果是java站点建议使用lucene,coreseek 是一款很好的中文全文检索/搜索软件,支持高速建立索引.有很强的扩展性.支持分布式检索,支持不同的搜索模式('完全匹配','短语匹配','任一匹配'). logo1 如果下面的过程遇到问题,请参考 coreseek安装遇到的错误和问题解决方案 我把安装和配置遇到的常见问题和解决办法都总结在那里了. 一.coreseek 安装 1:安

sphinx (coreseek)——3、区段查询 与 增量索引实例

首先本文测试数据100多万的域名的wwwtitle 信息  检索数据: 首先建立临时表格: CREATE TABLE `sph_counter` ( `index_id` tinyint(1) NOT NULL, `max_id` int(11) NOT NULL, PRIMARY KEY (`index_id`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8 csft.complex.conf 文件修改配置: #增量数据索引 区段查询 合并为一个文件实现 测试 配置

Coreseek:部门查询和增量索引代替实时索引

1.行业调查 索引系统需要通过主查询来获取所有的文档信息,一个简单的实现是整个表的数据到内存,但是这可能会导致整个表被锁定,并且使其它操作被阻止(例如:在MyISAM格款式上INSERT操作).同时,会浪费大量的内存来存储查询结果.喜欢它的问题. 为了避免出现这样的情况.CoreSeek/Sphinx支持一种被称为 区段查询的技术. 首先,CoreSeek/Sphinx从数据库中取出文档ID的最小值和最大值.将由最大值和最小值定义自然数区间分成若干份,一次获取数据.建立索引.现举比例如以下: s

Coreseek:区段查询及增量索引代替实时索引

1.区段查询 索引系统需要通过主查询来获取全部的文档信息,一种简单的实现是将整个表的数据读入内存,但是这可能导致整个表被锁定并使得其他操作被阻止(例如:在MyISAM格式上的INSERT操作),同时,将浪费大量内存用于存储查询结果,诸如此类的问题吧. 为了避免出现这种情况,CoreSeek/Sphinx支持一种被称为 区段查询的技术. 首先,CoreSeek/Sphinx从数据库中取出文档ID的最小值和最大值,将由最大值和最小值定义自然数区间分成若干份,一次获取数据,建立索引.现举例如下: sq

coreseek常见错误原因及解决方法

coreseek常见错误原因及解决方法 Coreseek 中文全文检索引擎 Coreseek 是一款中文全文检索/搜索软件,以GPLv2许可协议开源发布,基于Sphinx研发并独立发布,专攻中文搜索和信息处理领域,适用于行业/垂直搜索.论坛/站内搜索.数据库搜索.文档/文献检索.信息检索.数据挖掘等应用场景,用户可以免费下载使用 本文为大家整理了coreseek/sphinx中文检索引擎的常见问题和解决方法,感兴趣的同学参考下. Coreseek 是一款中文全文检索/搜索软件,以GPLv2许可协

Sphinx + Coreseek 实现中文分词搜索

Sphinx + Coreseek 实现中文分词搜索 Sphinx Coreseek 实现中文分词搜索 全文检索 1 全文检索 vs 数据库 2 中文检索 vs 汉化检索 3 自建全文搜索与使用Google等第三方站点提供的站内全文搜索的差别 Sphinx Coreseek介绍 Coreseek安装使用 1. 全文检索 1.1 全文检索 vs. 数据库 全文检索是数据库的有力补充,全文检索并不能替代数据库在应用系统中的作用.当应用系统的数据以大量的文本信息为主时,採用全文检索技术能够极大的提升应

coreseek使用

介绍:http://www.coreseek.cn/Coreseek 是一款中文全文检索/搜索软件,以GPLv2许可协议开源发布,基于Sphinx研发并独立发布,专攻中文搜索和信息处理领域,适用于行业/垂直搜索.论坛/站内搜索.数据库搜索.文档/文献检索.信息检索.数据挖掘等应用场景,用户可以免费下载使用:Coreseek 全面支持: FreeBSD6/7/8,Mac OS X 10.6,RHEL5.CentOS-5.Fedora-12/13.gentoo-10.openSUSE-10/11.s

coreseek安装过程

一.sphinx 全文检索 通过sphinx检索到id,然后到mysql里面拿到记录 什么是劝我呢检索?结构化数据: 具有固定格式或者长度的数据非结构化数据: 标题 内容 等不定长的数据非机构化数据还叫做"全文数据" 检索分为两个过程:索引创建 和 搜索索引 检索结构php -> sphinx -> mysql非结构化数据又叫全文数据,非固定长度字段例如文章标题搜索这类适用sphinx 全文数据搜索:顺序扫描 : 如like查找索引扫描 : 把非结构化数据中的内容提取出来一