标签分类
当前位置:首页 > > 搜索引擎电子书网盘下载
解密搜索引擎技术实战 Lucene Java精华版 解密搜索引擎技术实战 Lucene Java精华版
码小辫

码小辫 提供上传

资源
22
粉丝
33
喜欢
154
评论
11

    解密搜索引擎技术实战 Lucene Java精华版 PDF 影印第3版

    搜索引擎电子书
    • 发布时间:

    给大家带来的一篇关于搜索引擎相关的电子书资源,介绍了关于搜索引擎技术、Lucene、Java方面的内容,本书是由电子工业出版社出版,格式为PDF,资源大小135.6 MB,罗刚编写,目前豆瓣、亚马逊、当当、京东等电子书综合评分为:8.5

  • 解密搜索引擎技术实战 Lucene Java精华版 PDF 下载
  • 下载地址:https://pan.baidu.com/s/1Y56hmepFIUl9tR8_wplnwA
  • 分享码:xft6
  • 读者评价

    1、《解密搜索引擎技术实战:Lucene & Java精华版(第3版)》是畅销书的升级版,从实用的角度出发,全面介绍了搜索引擎相关技术。

    2、作者罗刚对搜索引擎技术非常熟悉,本书是其软件研发和教学实践的经验汇总。

    3、《解密搜索引擎技术实战:Lucene & Java精华版(第3版)》非常适合想全面了解搜索引擎技术及实现方法的读者阅读,亦可作为相关专业学生的参考用书。

    内容介绍

    解密搜索引擎技术实战:Lucene&Java精华版(第3版)是猎兔搜索开发团队的软件研发和教学实践的经验汇总。本书总结搜索引擎相关理论与实际解决方案,并给出了Java实现,其中利用了流行的开源项目Lucene和Solr,而且还包括原创的实现。本书主要包括总体介绍部分、爬虫部分、自然语言处理部分、全文检索部分以及相关案例分析。

    爬虫部分介绍了网页遍历方法和如何实现增量抓取,并介绍了从网页等各种格式的文档中提取主要内容的方法。

    自然语言处理部分从统计机器学习的原理出发,包括了中文分词与词性标注的理论与实现及在搜索引擎中的应用等细节,同时对文档排重、文本分类、自动聚类、句法分析树、拼写检查等自然语言处理领域的经典问题进行了深入浅出的介绍,并总结了实现方法。

    在全文检索部分,结合Lucene介绍了搜索引擎的原理与进展。用简单的例子介绍了Lucene的应用方法,包括完整的搜索实现过程:从完成索引到搜索用户界面的实现。

    内容节选

    Lucene实现多种高级搜索形式

    布尔操作符

    大多数的搜索引擎都会提供布尔操作符让用户可以组合查询,典型的布尔操作符有 AND, OR, NOT。Lucene 支持 5种布尔操作符,分别是 AND, OR, NOT, 加(+), 减(-)。接下来我会讲述每个操作符的用法。

    OR: 如果你要搜索含有字符 A 或者 B 的文档,那么就需要使用 OR操作符。需要记住的是,如果你只是简单的用空格将两个关键词分割开,其实在搜索的时候搜索引擎会自动在两个关键词之间加上 OR操作符。例如,“Java OR Lucene” 和 “Java Lucene” 都是搜索含有 Java 或者含有 Lucene的文档。

    AND: 如果你需要搜索包含一个以上关键词的文档,那么就需要使用 AND 操作符。例如,“Java AND Lucene”返回所有既包含 Java 又包含 Lucene 的文档。

    NOT: Not 操作符使得包含紧跟在 NOT 后面的关键词的文档不会被返回。例如,如果你想搜索所有含有 Java 但不含有Lucene 的文档,你可以使用查询语句 “Java NOT Lucene”。但是你不能只对一个搜索词使用这个操作符,比如,查询语句“NOT Java” 不会返回任何结果。

    加号(+): 这个操作符的作用和 AND 差不多,但它只对紧跟着它的一个搜索词起作用。例如,如果你想搜索一定包含Java,但不一定包含 Lucene 的文档,就可以使用查询语句“+Java Lucene”。

    减号(-): 这个操作符的功能和 NOT 一样,查询语句 “Java -Lucene” 返回所有包含 Java 但不包含Lucene 的文档。

    接下来我们看一下如何利用 Lucene 提供的 API 来实现布尔查询。清单1 显示了如果利用布尔操作符进行查询的过程。

    清单1:使用布尔操作符

    //Test boolean operator
    public void testOperator(String indexDirectory) throwsException{
    Directory dir =FSDirectory.getDirectory(indexDirectory,false);
    IndexSearcher indexSearcher = new IndexSearcher(dir);
    String[] searchWords = {"Java AND Lucene", "Java NOT Lucene", "JavaOR Lucene",
    "+Java +Lucene", "+Java -Lucene"};
    Analyzer language = new StandardAnalyzer();
    Query query;
    for(int i = 0; i < searchWords.length; i++){
    query = QueryParser.parse(searchWords[i], "title", language);
    Hits results = indexSearcher.search(query);
    System.out.println(results.length() + "search results for query " +searchWords[i]);}<p></p>
    <p></p>

    域搜索(Field Search)

    Lucene 支持域搜索,你可以指定一次查询是在哪些域(Field)上进行。例如,如果索引的文档包含两个域,Title 和Content,你就可以使用查询 “Title: Lucene AND Content: Java” 来返回所有在 Title域上包含 Lucene 并且在 Content 域上包含 Java 的文档。清单 2 显示了如何利用 Lucene 的 API来实现域搜索。

    清单2:实现域搜索

    <p>//Test field search
    public void testFieldSearch(String indexDirectory) throwsException{
    Directory dir =FSDirectory.getDirectory(indexDirectory,false);
    IndexSearcher indexSearcher = new IndexSearcher(dir);
    String searchWords = "title:Lucene AND content:Java";
    Analyzer language = new StandardAnalyzer();
    Query query = QueryParser.parse(searchWords, "title",language);
    Hits results = indexSearcher.search(query);
    System.out.println(results.length() + "search results for query " +searchWords);</p>
    <p></p>

    通配符搜索(Wildcard Search)

    Lucene支持两种通配符:问号(?)和星号(*)。你可以使用问号(?)来进行单字符的通配符查询,或者利用星号(*)进行多字符的通配符查询。例如,如果你想搜索tiny 或者 tony,你就可以使用查询语句 “t?ny”;如果你想查询 Teach, Teacher 和Teaching,你就可以使用查询语句 “Teach*”。清单3 显示了通配符查询的过程。

    清单3:进行通配符查询

    <p>//Test wildcard search
    public void testWildcardSearch(String indexDirectory)throwsException{
    Directory dir =FSDirectory.getDirectory(indexDirectory,false);
    IndexSearcher indexSearcher = new IndexSearcher(dir);
    String[] searchWords = {"tex*", "tex?", "?ex*"};
    Query query;
    for(int i = 0; i < searchWords.length; i++){
    query = new WildcardQuery(new Term("title",searchWords[i]));
    Hits results = indexSearcher.search(query);
    System.out.println(results.length() + "search results for query " +searchWords[i]);}</p>
    <p></p>

    模糊查询

    Lucene 提供的模糊查询基于编辑距离算法(Edit distance algorithm)。你可以在搜索词的尾部加上字符 ~来进行模糊查询。例如,查询语句 “think~” 返回所有包含和 think 类似的关键词的文档。清单 4 显示了如果利用Lucene 的 API 进行模糊查询的代码。

    清单4:实现模糊查询

    <p>//Test fuzzy search
    public void testFuzzySearch(String indexDirectory)throwsException{
    Directory dir =FSDirectory.getDirectory(indexDirectory,false);
    IndexSearcher indexSearcher = new IndexSearcher(dir);
    String[] searchWords = {"text", "funny"};
    Query query;
    for(int i = 0; i < searchWords.length; i++){
    query = new FuzzyQuery(new Term("title",searchWords[i]));
    Hits results = indexSearcher.search(query);
    System.out.println(results.length() + "search results for query " +searchWords[i]);}</p>
    <p></p>

    范围搜索(Range Search)

    范围搜索匹配某个域上的值在一定范围的文档。例如,查询 “age:[18 TO 35]” 返回所有 age 域上的值在 18 到35 之间的文档。清单5显示了利用 Lucene 的 API 进行返回搜索的过程。

    清单5:测试范围搜索

    <p>//Test range search
    public void testRangeSearch(String indexDirectory)throwsException{
    Directory dir =FSDirectory.getDirectory(indexDirectory,false);
    IndexSearcher indexSearcher = new IndexSearcher(dir);
    Term begin = new Term("birthDay","20000101");
    Term end = newTerm("birthDay","20060606");
    Query query = new RangeQuery(begin,end,true);
    Hits results = indexSearcher.search(query);
    System.out.println(results.length() + "search results isreturned");
    }</p>

    目录

    • 第1章 搜索引擎总体结构 1
    • 第2章 网络爬虫的原理与应用 11
    • 第3章 索引内容提取 86
    • 第4章 中文分词的原理与实现 144
    • 第5章 让搜索引擎理解自然语言 199
    • 第6章 Lucene原理与应用 303
    • 第7章 搜索引擎用户界面 370
    • 第8章 使用Solr实现企业搜索 413
    • 第9章 地理信息系统案例分析 474
    • 第10章 户外活动搜索案例分析 495

    上一篇:Java从入门到精通  下一篇:从零开始学Python网络爬虫

    展开 +

    收起 -

    搜索引擎相关电子书
    学习笔记

    Copyright 2018-2019 xz577.com 码农之家

    版权责任说明