Skip to content

freedream520/Psearch

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

17 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

#Psearch - 简单分类搜索搭建程序

基于此程序可快速搭建分类搜索引擎,能基本满足中小网站搜索需求,本程序目前为测试版本,仅供开发参考,请误用于生产环境。

更新时间:2013.07.14

最新版本:1.0_Alpha

#环境搭建

1.coreseek/sphinx

2.Nginx/PHP

3.MySQL

#部署程序

1.将源码包拷贝到Web目录中,如:

ROOT : /home/www/webroot/Psearch
URL  : http://localhost/Psearch/
其中data, sphinx需要可写权限

2.编写配置文件

vim ./Inc/Config.Inc.php

1)static $db:     数据库配置信息,需手动建立数据库
2)static $sphinx: sphinx searchd服务器信息
3)static $gzip:   是否启用Gzip压缩
4)static $index:  索引核心配置信息,用来生成索引临时表和生成sphinx参考配置片段
    参考实例:
        static $index = array(
            //酒庄索引
            'winery' => array(
                //酒庄中文名,全文检索属性
                'cname' => 'varchar(200)|sql_field_string',        
                //酒庄外文名,全文检索属性
                'fname' => 'varchar(200)|sql_field_string',        
                //葡萄品种
                'grape_id' => 'varchar(100)|sql_attr_multi|uint grape_id from field'
                //酒庄分级
                'honor' => 'varchar(255)|sql_attr_string',        
                //所属国家
                'country' => 'varchar(255)|sql_attr_string',        
                //所属产区
                'region' => 'varchar(255)|sql_attr_string',        
            ),        
        );
5) static $charsetDictpath: mmseg中文分词词典所在的目录,默认为{$MMSEG_PATH}/etc

3.执行初始化程序,用于生成数据库和生成简单的Sphinx配置文件片段

1)生成索引存储表
    {$PHP_BIN}/php -f {$ROOT}/cli.php init winery 
    其中winery应在配置文件Inc/Config.Inc.php的$index中存在,否则会报错
    若索引存储表已存在,则可在命令行最后添加 force 强制重建,此操作会删除源表中所有数据

2)根据生成的MySQL表生成sphinx配置文件片段
    {$PHP_BIN}/php -f {$ROOT}/cli.php sphinx winery
    生成的配置文件片段存在与sphinx/sphinx.winery.conf中,需手动加入到coreseek/sphinx的配置中去

4.接口使用

1)接口规范
    请求方式: HTTP/POST
    HEADER头: Content-Type:application/json
    数据请求格式: json
    数据返回格式: json

2)保存数据接口(save)
    请求JSON
        {
            "method":"save",
            "index":"winery",
            "key":12,
            "field":{
                        "cname":"酒庄中文名",
                        "fname":"Fname",
                        "grape_id":"12,32,124,321,122",
                        "country":"法国",
                        "region":"波尔多"
                    }
        }
    说明: method,执行方法(必须)
          index,索引名称(必须)
          key,主键ID,必须是正整数,且不能重复(必须)
          field,需要保存到索引数据库中的数据(可省略部分字段)

3)更新数据接口(update)
    请求JSON
        {
            "method":"update",
            "index":"winery",
            "key":12,
            "field":{
                        "cname":"酒庄新中文名",
                        "country":"新国家"
                    }
        }
    说明: method,执行方法(必须)
          index,索引名称(必须)
          key,主键(必须)
          field,需要更新的具体字段(只提交需要更新字段)

4)删除数据接口(delete)
    请求JSON
        {
            "method":"delete",
            "index":"winery",
            "key":12
        }
    说明: method,执行方法(必须)
          index,索引名称(必须)
          key,主键,数据将根据主键删除(必须)

5)数据读取接口(find)
    请求JSON
        {
            "method":"find",
            "index":"winery",
            "keyword":"葡萄酒",
            "limit":"1|2",
            "order":"uid|asc",
            "condition":[
                            "filter|country_id|87",
                            "filter|region_id|12"
                        ]
        }
    说明: method,执行方法(必须)
          index,索引名称(必须)
          keyword,检索关键字(必须,可为空,为空则检索全部)
          limit, [当前页码]|[每页获取数据] (可选,忽略该字段后程序默认为 1|20)
          order, [排序字段名]|[asc or desc](可选)
          condition,按条件查找数据,目前只支持正整数字段值过滤,支持多重过滤,如查找uid为10001的数据则写为"filter|uid|10001",

#待完善

1.sphinx索引需自行添加到系统计划任务执行更新

2.未作增量索引分离,目前仅适用于百万以内数据存储索引使用

3.未实现读取缓存功能

About

简单分类搜索搭建程序,可以通过Sphinx和PHP技术可以解决中小型网站分类搜索问题。

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • PHP 99.9%
  • HTML 0.1%