全球彩票平台_全球彩票注册平台|官网下载地址

热门关键词: 全球彩票平台,全球彩票注册平台,全球彩官网下载地址

全球彩票平台php启用sphinx全文搜索的实现方法,

Sphinx MySQL PHP 12亿DNS数据秒查

新近赢得二个近似12亿的中外ns节点的数目,本来想用来做贰个全国经过dns反查域名然后举办全国范围的网址访谈和围观的,后来发掘网址的数额不是很确切,加上一人的活力和费用实在难以完毕那样贰个巨大的任务,就从不做下来,只留下了那么些搭建的笔记。

文本格式,简单的文件寻找,速度太慢,二遍找出类似花掉5-10分钟时间,决定将其倒入数据库进行三回优化,速度相应能升官不到,计算机上唯有AMP的遭遇,那么就决定将其倒入到mysql中,

一开首选拔Navicat进行倒入,刚好数据的格式是 ip,ns 这样的格式,倒入了类似5个时辰发先生现还并没有倒入到百分之一,那然而纯文本格式化的时候大小为54G的数据文件啊!

新兴意识用mysql自带的load data local infile只话了30分钟左右,第一回导入的时候忘记新建键了,只可以再一次导入二回

mysql> load data local infile 'E:\dns\rite\20141217-rdns.txt' into table dns
fields terminated by ',';
Query OK, 1194674130 rows affected, 1700 warnings (29 min 26.65 sec)
Records: 1194674130  Deleted: 0  Skipped: 0  Warnings: 1700

    因为增多了二个id字段,所以导入速度明显下落,可是差十分的少也只花了1个半钟头左右的光阴就马到功成了55G数码的导入。
    接着是创制目录,因为小编急需的歪曲查询,所以在此间创造的是Full Text+Btree,差不离花了3天时间索引才建构完毕,时期因为一不小心把mysql的进行窗口关闭了,认为就疑似此完蛋了,最终开采其实mysql还在后台默默的树立目录。
    创建了目录之后开采查询速度也就比一贯不建构索引快那么一些,实践了一条

select * from ns where ns like '%weibo.com'

    花掉了210秒的时日,依旧太慢了。
    然后就起来应用SPhinx来做索引升高速度,
    从官方下载了64个人的SPHINX MYSQL SUPPORT的包下载地址
    接着布置配置文件,src里布署要mysql的账号密码

source src1
{
    sql_host        = localhost
    sql_user        = root
    sql_pass        = root
    sql_db          = ns
    sql_port        = 3306 
    sql_query      =
        SELECT id,ip,ns from ns //这里写上询问语句
    sql_attr_uint      = id  

接下来searchd里也亟需铺排一下,端口和日志,pid文件的渠道配置好就可以

searchd
{
    listen          = 9312
    listen          = 9306:mysql41
    log        = E:/phpStudy/splinx/file/log.log
    query_log      = E:/phpStudy/splinx/file/query.log
    pid_file        = E:/phpStudy/splinx/file/searchd.pid  

然后切换成sphinx的bin目录举办确立目录,试行

searchd test1 #test1是你source的名称

作者大概创建了不到2个钟头的光阴就塑造达成了,
下一场切换成api目录下进行

E:phpStudysplinxapi>test.py asd
DEPRECATED: Do not call this method or, even better, use SphinxQL instead of an
API
Query 'asd ' retrieved 1000 of 209273 matches in 0.007 sec
Query stats:
        'asd' found 209291 times in 209273 documents
Matches:

  1. doc_id=20830, weight=1
  2. doc_id=63547, weight=1
  3. doc_id=96147, weight=1
  4. doc_id=1717000, weight=1
  5. doc_id=2213385, weight=1
  6. doc_id=3916825, weight=1
  7. doc_id=3981791, weight=1
  8. doc_id=5489598, weight=1
  9. doc_id=9348383, weight=1
  10. doc_id=18194414, weight=1
  11. doc_id=18194415, weight=1
  12. doc_id=18195126, weight=1
  13. doc_id=18195517, weight=1
  14. doc_id=18195518, weight=1
  15. doc_id=18195519, weight=1
  16. doc_id=18195520, weight=1
  17. doc_id=18195781, weight=1
  18. doc_id=18195782, weight=1
  19. doc_id=18200301, weight=1
  20. doc_id=18200303, weight=1

拓宽了测量检验,开采速度确实相当的慢,写了一个PHP脚本实行调用

<?php
include 'sphinxapi.php';
$conn=mysql_connect('127.0.0.1','root','root');
mysql_select_db('ns',$conn);
$sphinx = new SphinxClient();
$now=time();
$sphinx->SetServer ( '127.0.0.1', 9312 );
$result = $sphinx->query ('weibo.com', 'test1');
foreach($result['matches'] as $key => $val){
    $sql="select * from ns where id='{$key}'";
    $res=mysql_query($sql);
    $res=mysql_fetch_array($res);
    echo "{$res['ip']}:{$res['ns']}";

}
echo time()-$now;
?>

主干实现了秒查!,最终输出的日子只花掉了0!
 
123.125.104.176:w-176.service.weibo.com
123.125.104.178:w-178.service.weibo.com
123.125.104.179:w-179.service.weibo.com
123.125.104.207:w-207.service.weibo.com
123.125.104.208:w-208.service.weibo.com
123.125.104.209:w-209.service.weibo.com
123.125.104.210:w-210.service.weibo.com
202.106.169.235:staff.weibo.com
210.242.10.56:weibo.com.tw
218.30.114.174:w114-174.service.weibo.com
219.142.118.228:staff.weibo.com
60.28.2.221:w-221.hao.weibo.com
60.28.2.222:w-222.hao.weibo.com
60.28.2.250:w-222.hao.weibo.com
61.135.152.194:sina152-194.staff.weibo.com
61.135.152.212:sina152-212.staff.weibo.com
65.111.180.3:pr1.cn-weibo.com
160.34.0.155:srm-weibo.us2.cloud.Oracle.com
202.126.57.40:w1.weibo.vip.hk3.tvb.com
202.126.57.41:w1.weibo.hk3.tvb.com
0

正文恒久更新链接地址:

12亿DNS数据秒查 这段日子拿走八个附近12亿的中外ns节点的数额,本来想用来做一个全国经过dns反查域名然后实行全国范围的网址收...

在编写翻译安装 sphinx 的时候出现过多国语乱码,最终抛出错误卡住了。 小编去到法定一向下载一个 rpm 包,安装就很爽。。。具体错误不想研商了。忙开垦呢~~
设置四个包。三个是 mmseg   这几个是浮动中文字典的前后相继  三个是  csft 也正是中夏族民共和国版的sphinx
rpm -ivh 安装完之后。很顺遂不到半分钟就装完了。。。
偷懒,中文字典库,小编平昔去 csft 官方下载了。蛮好的想得很周密。。。
unigram.txt      uni.lib
unigram.txt   字典文本,能够在其间加多你自身的首要字
接下来利用
mmseg -u unigram.txt  生成字典文件:unigram.txt.uni   然后重命名一下  uni.lib  那些正是sphinx 认知的字典了。
放何地? 放你在 sphinx.conf 里面配备的字典路线里面,等会提及
接下来基本就大概了
在看下sphinx 多少个实用的次第
[root@beihai365 /]# csft-
csft-indexer  csft-search   csft-searchd
csft-indexer  是生成全文寻觅索引的 程序
csft-search  是测量检验找寻是或不是见功用的,也很好用,不比自个儿还没用顾客端脚本开发,就可以用这么些来查看全文检索是或不是中标
csft-searchd  这几个正是 sphinx 搜索的照管程序了。 运转现在,就可以用脚本 php python 等,开查询了。
就那么粗略

在看下关键的两部分东西
sphinx.conf 配置文件
view plaincopy to clipboardprint?
source tmsgs   
{   
        type                                    = mysql   
        sql_host                                = localhost   
        sql_user                                = root   
        sql_pass                                = 1   
        sql_db                                  = phpwind75sp3   
        sql_port                                = 3306  # optional, default is 3306   
        #sql_sock                                = /tmp/mysql3307.sock   
        sql_query_pre                           = SET NAMES gbk   
        sql_query                               = SELECT id,name,type,stock FROM pw_tools   
        #sql_attr_uint                          = id   
        sql_attr_uint                           = stock   
}   
  
index tmsgsindex   
{   
        source                                  = tmsgs   
        path                                    = /var/mmseg/searchdata/beihai365   
        docinfo                                 = extern   
        charset_type                            = zh_cn.gbk   
        #min_prefix_len  = 0   
        #min_infix_len  = 2   
        #ngram_len = 2   
        charset_dictpath                        = /var/mmseg/data   
        #min_prefix_len                          = 0   
        #min_infix_len                           = 0   
        #min_word_len                            = 2   
}   
  
indexer   
{   
        mem_limit                               = 128M   
}   
  
searchd   
{   
        #listen                                = 3312   
        log                                 = /var/log/searchd.log   
        query_log                           = /var/log/query.log   
        read_timeout                        = 5   
        max_children                        = 30   
        pid_file                            = /var/log/searchd.pid   
        max_matches                         = 1000   
        #seamless_rotate                     = 1   
        #preopen_indexes                     = 0   
        #unlink_old                          = 1   
}  
source tmsgs
{
        type                                    = mysql
        sql_host                                = localhost
        sql_user                                = root
        sql_pass                                = 1
        sql_db                                  = phpwind75sp3
        sql_port                                = 3306  # optional, default is 3306
        #sql_sock                                = /tmp/mysql3307.sock
        sql_query_pre                           = SET NAMES gbk
        sql_query                               = SELECT id,name,type,stock FROM pw_tools
        #sql_attr_uint                          = id
        sql_attr_uint                           = stock
}
index tmsgsindex
{
        source                                  = tmsgs
        path                                    = /var/mmseg/searchdata/beihai365
        docinfo                                 = extern
        charset_type                            = zh_cn.gbk
        #min_prefix_len  = 0
        #min_infix_len  = 2
        #ngram_len = 2
        charset_dictpath                        = /var/mmseg/data
        #min_prefix_len                          = 0
        #min_infix_len                           = 0
        #min_word_len                            = 2
}
indexer
{
        mem_limit                               = 128M
}
searchd
{
        #listen                                = 3312
        log                                 = /var/log/searchd.log
        query_log                           = /var/log/query.log
        read_timeout                        = 5
        max_children                        = 30
        pid_file                            = /var/log/searchd.pid
        max_matches                         = 1000
        #seamless_rotate                     = 1
        #preopen_indexes                     = 0
        #unlink_old                          = 1
}

本文实例汇报了php启用sphinx全文字笔迹核实索的兑现方式。分享给我们供大家参照他事他说加以考察。具体剖析如下:

Sphinx 是由俄罗斯人AndrewAksyonoff开荒的一个全文字笔迹核实索引擎。意图为别的应用提供赶快、地空间占领、高结果相关度的全文字笔迹核实索效果。Sphinx能够非常轻易的与SQL数据库和脚本语言集成。当前系统内置的MysqL和PostgreSQL数据库数据源的支撑,也支撑从正式输入读取特定格式的xml数据。通过修改源码,能够自行扩展新的数据源(举个例子:其余项指标DBMS的原生支持)

再看一下 测量试验顾客端代码
view plaincopy to clipboardprint?
<?php   
    header("Content-type:text/html;charset=utf-8");   
    include 'sphinxapi.php';   
    $cl = new SphinxClient();   
    $cl->SetServer('localhost',3312);   
    $cl->SetMatchMode(SPH_MATCH_ALL);   
    $cl->SetArrayResult(true);   
    $res = $cl->Query("名卡","*");   
    print_r($res);   
      
?>  
<?php
header("Content-type:text/html;charset=utf-8");
include 'sphinxapi.php';
$cl = new SphinxClient();
$cl->SetServer('localhost',3312);
$cl->SetMatchMode(SPH_MATCH_ALL);
$cl->SetArrayResult(true);
$res = $cl->Query("名卡","*");
print_r($res);

在编写翻译安装 sphinx 的时候出现多数华语乱码,最后抛出荒唐卡住了,作者去到法定平素下载三个 rpm 包,安装就很爽,具体错误不想切磋了,忙开采呢.

1、Sphinx汉语分词

?>
“名卡”这些第一字是自家要好手动在字典里面加多的。看是不是能真的搜到
view plaincopy to clipboardprint?
Array   
(   
    [error] =>   
    [warning] =>   
    [status] => 0   
    [fields] => Array   
        (   
            [0] => name   
            [1] => type   
        )   
  
    [attrs] => Array   
        (   
            [stock] => 1   
        )   
  
    [matches] => Array   
        (   
            [0] => Array   
                (   
                    [id] => 8   
                    [weight] => 1   
                    [attrs] => Array   
                        (   
                            [stock] => 100   
                        )   
  
                )   
  
        )   
  
    [total] => 1   
    [total_found] => 1   
    [time] => 0.018   
    [words] => Array   
        (   
            [名卡] => Array   
                (   
                    [docs] => 1   
                    [hits] => 1   
                )   
  
        )   
  
)  
Array
(
    [error] =>
    [warning] =>
    [status] => 0
    [fields] => Array
        (
            [0] => name
            [1] => type
        )
    [attrs] => Array
        (
            [stock] => 1
        )
    [matches] => Array
        (
            [0] => Array
                (
                    [id] => 8
                    [weight] => 1
                    [attrs] => Array
                        (
                            [stock] => 100
                        )
                )
        )
    [total] => 1
    [total_found] => 1
    [time] => 0.018
    [words] => Array
        (
            [名卡] => Array
                (
                    [docs] => 1
                    [hits] => 1
                )
        )
)
全然没难题。寻觅出来了。
几个首要的操作
[root@beihai365 /]# csft-searchd --stop    甘休找寻守护
[root@beihai365 /]# csft-indexer --all    针对富有节点生成索引。你也能够本着有个别节点生成索引比方:csft-indexer  xx
[root@beihai365 /]# csft-search App   寻觅关键字  App 。 可是看上面消息并未有搜到和未有命中任何的文书档案。
Coreseek Full Text Server 3.1
Copyright (c) 2006-2008 coreseek.com
using config file './csft.conf'...
1,
pt:1, 1;        index 'tmsgsindex': query 'App ': returned 0 matches of 0 total in 0.017 sec
words:

设置三个包,多个是 mmseg 那一个是生成中文字典的次第,四个是  csft 约等于中夏族民共和国版的sphinx .

中文的全文字笔迹核准索是遵照语义来分词,最近大多数数据库尚未帮助普通话全文字笔迹核实索,如Mysql。Sphinx要是必要对中文实行全文字笔迹核实索,也得供给一些插件来补充,举例coreseek和sfc。

  1. 'app': 0 documents, 0 hits
    当大家在运作这一个命令的时候开掘,须求您自身手动的置顶 --config  sphinx.conf   配置文件的门路。。很不方便人民群众。。
    故而小编干脆   ln -s  一个在 ./ 。那样毫无每一遍都去敲入  --config  

rpm -ivh 安装完事后,很顺畅~~不到半分钟就装完了.

  • Coreseek是今天用的最多的sphinx普通话全文字笔迹核查索,它提供了为Sphinx设计的中文分词包LibMMSeg 。并提供了四个种类的二进制发行版,当中有rpm,deb及windows下的二进制包。
  • sfc(sphinx-for-chinese)是由网络朋友happy兄提供的别的叁其中文分词插件。其粤语词典采取的是xdict。据其介绍,经过测量试验,近些日子版本在目录速度上(Linux 测验平台)基本上能够达到规定的规范索引UTF-8立陶宛共和国(Republic of Lithuania)语的四分之二,即官方注解速度的二分一。(时间根本是消耗在分词上)。

华语字典库,作者直接去 csft 官方下载了,蛮好的想得很周密.

 2、安装

unigram.txt  uni.lib

Sphinx在mysql上的选用有二种方法:
(1)选取API调用,如采纳PHP、java等的API函数或措施查询。优点是可不必对mysql重新编写翻译,服务端进度“低耦合”,且前后相继可灵活、方便的调用;瑕疵是如已有追寻程序的尺度下,需修改部分顺序。推荐技士使用。
(2)使用插件情势(sphinxSE)把sphinx编写翻译成四个mysql插件并行使一定的sql语句实行查找。其特点是,在sql端方便组合,且能一向回到数据给客商端不必三次查询(注),在前后相继上仅必要修改对应的sql,但那对使用框架开垦的前后相继很不方便人民群众,比方动用了ORM。另外还亟需对mysql举行双重编写翻译,且供给mysql-5.1以上版本辅助插件存储。系统助理馆员可选取这种艺术。

unigram.txt  字典文本,能够在其间增多你本人的要害字.

行使第一种办法开展安装:

下一场利用:mmseg -u unigram.txt 生成字典文件:unigram.txt.uni 然后重命名一下  uni.lib 这一个就是sphinx 认知的字典了.

软件条件:

放哪儿?放你在 sphinx.conf 里面配备的字典路径里面,等会提起,然后基本就大多了,在看下sphinx 几个实用的前后相继:

  • 操作系统:CentOS-5.2
  • 数据库:mysql-5.0.77-3.el5 mysql-devel(就算要运用sphinxSE插件存款和储蓄请使用mysql-5.1以上版本)
  • 编写翻译软件:gcc gcc-c autoconf automake
  • Sphinx :Sphinx-0.9.9 (最新稳固版 )

复制代码 代码如下:

安装:

[root@beihai365 /]# csft-

  • [root@localhost ~]# yum install -y mysql mysql-devel
  • [root@localhost ~]# yum install -y automake autoconf
  • [root@localhost ~]# cd /usr/local/src/
  • [root@localhost src]# wget
  • [root@localhost src]# tar zxvf sphinx-0.9.9.tar.gz
  • [root@localhost local]# cd sphinx-0.9.9
  • [root@localhost sphinx-0.9.9]# ./configure –prefix=/usr/local/sphinx #只顾:这里sphinx已经默许协理了mysql
  • [root@localhost sphinx-0.9.9]# make && make install # 个中的“警告”可以忽略

csft-indexer  csft-search   csft-searchd

设置收尾后翻看一下/usr/local/sphinx下是还是不是有 三个目录 bin etc var,如有,则设置精确!

csft-indexer  是转换全文寻觅索引的 程序

sfc 安装

本文由全球彩票平台发布于全球彩票平台操作系统,转载请注明出处:全球彩票平台php启用sphinx全文搜索的实现方法,

TAG标签: 全球彩票平台
Ctrl+D 将本页面保存为书签,全面了解最新资讯,方便快捷。