位置:首页  >   读书笔记  > 全栈学习-二十四讲-全文索引

全栈学习-二十四讲-全文索引

1. 数据查询

    1.结构化数据,有固定格式或有限长度

      账号,密码,分数等

      一般通过关系型数据库存储和查询,建立索引

     2,非结构化数据,不定长或无固定格式数据

          邮件内容,word文档

          可以通过顺序查找,例如windows搜索linux grep

2. 全文索引原理

         把结构化数据转变成结构化数据,分2大部分:

         1,索引:把非结构化数据分解,创建词的索引,反向索引?倒排表?

         2.搜索:只需在创建的索引里直接获取而不需要扫描原文

                   关键在于排序

           问题:索引+搜索的时间比顺序扫描快吗?为什么还要建立索引?

4.   词法分析和语法分析

      分词

        a 单词

        b 去标点

        c 停词

       d 大小写,词根

        搜索时分词是一样处理吗?

      语法分析:

      + -  or ""  site link


4  词法分析和语法分析

    关于中文分词

   a  二分法

    b  词典法

    c  最短匹配 ,最长匹配

    d  复合分词


7.  爬虫协议

    rebots.txt

    User-agent:*

     Disallow:  /reg/

     Allow:  /*.html*/

     Disallow: /*php?*

第二章:

    1.关系型DB全文索引:MySQL FULLTEXT

       功能受限

    2.脚本语言SQL结合全文索引:Sphinx Xunsearch

      与SQL和脚本语言结合紧密,性能好

    3. 完全定制全文检索 Lucene

       功能强大,开发量大

      4. 网络爬虫与搜索:Nutch与Solr

         直接使用,适合简单快速获取信息


2. MySQL 全文索引示例

      索引:fulltext key(field)

       查询: where MATCH(field) AGAINST('word');

       配置:

       MYISAM:

        ft_min_word_len, ft_max_word_len

        ft_stopword_file

        ft_query_expansion_limit: 使用with query expansion进行全文索引的最大匹配数

       

        InnoDB: innodb_ft_min_token_size


        2. MySQL 全文索引示例

          1. NATURAL LANGUAGE MODE 默认自然语言模式,多于50%忽略,相关性排序

          2.BOOLEAN MODE 不排序,无限制,可以有语法

            3, WITH QUERY EXPANSION 自然语言模式的二次查询

    MYSQL全文索引限制

         1,只有MyISAM表支持(5.6后innodb也支持),只支持char varchar,text列

        2,对大多数的多字节字符集适用,索引列必须使用相同的字符集和校验码collation

        3, 表意性语言,如汉语,日语没有词分界符,全文检索不支持。

        4. 自然语言检索必须对检索列单独建全文索引,布尔检索可以在非索引的列上进行,但会慢一些

        5. against后的参数必须是常量字符串

       6,索引没有记录关键词在字符串中的位置,排序算法太单一。

      7. 索引不再内存中检索速度会很慢,索引有碎片时也会很慢,所以需要更频繁的optimize table操作。

      8.全文索引对于insert ,update,delete 都很慢。

 

xunsearch

      

第四章:Lucene API

    solr

    Nutch:

    Compass

     Elastic Search :分布式RESTFUL风格接口

问题:

  1.多次索引会重复吗?

 2.  如何更新和删除

  3, 多字段如何搜索

  4.排序,与,或等条件搜索?

 5. 如何自动触发索引

 6. 跨语言如何调用

    第五章:Solr与Nutch集成

5. 集成方法

   Nutch爬虫直接入库Solr

    已经抓取的可以用命令工具bin/nutch index 入库

   bin/crawl urls data http://localhost:8983/solr/uca 1

配置:

1.复制Nutch字段配置到Solr:{nutch_dir} /conf/scheme-solr4.xml到

  {solr_dir}/solr/ucai/conf/scheme.xml

2.  加入版本字段到最后:<field name="_version_" type="long" indexed="true" stored="true"

multiValued="false"/> 

 

 

 

 

 

 

 

 

 

 










0
文章属性
精彩评论