05 2018 档案
摘要:在项目之中我们经常会涉及到字符串和各种对象的转换,为此特地整理了一下常用的转换方法 一、基于com.google.code.gson封装的json转换工具类 1. 在pom.xml文件里面引入gson的依赖 2. 编写工具类GsonUtil 二、基于阿里的fastjson封装的json转换工具类 1
阅读全文
摘要:一、Schema介绍 1. Schema 是什么? Schema:模式,是集合/内核中字段的定义,让solr知道集合/内核包含哪些字段、字段的数据类型、字段该索引存储。 2. Schema 的定义方式 Solr中提供了两种方式来配置schema,两者只能选其一 2.1 默认方式,通过Schema A
阅读全文
摘要:一、solr两种部署模式介绍 Standalone Server 独立服务器模式:适用于数据规模不大的场景 SolrCloud 分布式集群模式:适用于数据规模大,高可靠、高可用、高并发的场景 二、独立服务器模式详解 1. 独立服务器模式架构 说明: 1、每个solr服务器实例(启动的一个solr服务
阅读全文
摘要:一、前言 前面已经学习了Lucene的分词、索引详解、搜索详解的知识,已经知道开发一个搜索引擎的流程了。现在就会有这样的一个问题:如果其他的系统也需要使用开发的搜索引擎怎么办呢?这个时候就需要把开发的搜索引擎封装成一个组件或者独立成一个单独的服务给其他系统使用了。目前市面上已经有基于Lucene的成
阅读全文
摘要:一、搜索流程详解 1. 先看一下Lucene的架构图 由图可知搜索的过程如下: 用户输入搜索的关键字、对关键字进行分词、根据分词结果去索引库里面找到对应的文章id、根据文章id找到对应的文章 2. Lucene搜索API 图示 3. Lucene搜索代码示例 先在pom.xml里面引入查询分析器模块
阅读全文
摘要:一、IndexWriter详解 问题1:索引创建过程完成什么事? 分词、存储到反向索引中 1. 回顾Lucene架构图: 介绍我们编写的应用程序要完成数据的收集,再将数据以document的形式用lucene的索引API创建索引、存储。 这里重点要强调应用代码负责做什么,lucene负责做什么。 2
阅读全文
摘要:一、Lucene提供的分词器StandardAnalyzer和SmartChineseAnalyzer 1.新建一个测试Lucene提供的分词器的maven项目LuceneAnalyzer 2. 在pom.xml里面引入如下依赖 3. 新建一个标准分词器StandardAnalyzer的测试类Luc
阅读全文
摘要:一、Lucene分词器详解 1. Lucene-分词器API (1)org.apache.lucene.analysi.Analyzer 分析器,分词器组件的核心API,它的职责:构建真正对文本进行分词处理的TokenStream(分词处理器)。通过调用它的如下两个方法,得到输入文本的分词处理器。
阅读全文
摘要:一、Lucene介绍 1. Lucene简介 最受欢迎的java开源全文搜索引擎开发工具包。提供了完整的查询引擎和索引引擎,部分文本分词引擎(英文与德文两种西方语言)。Lucene的目的是为软件开发人员提供一个简单易用的工具包,以方便在目标系统中实现全文检索功能,或者是以此为基础建立起完整的全文检索
阅读全文
摘要:一、为什么需要搜索引擎 问题1:数据库索引的原理是怎样的? 索引原理:对列值创建排序存储,数据结构={列值、行地址}。在有序数据列表中就可以利用二分查找快速找到要查找的行的地址,再根据地址直接取行数据。 问题2:索引的排序,是怎么排的? 数值列 时间列 文本列 问题3:在新闻标题列上建索引,当我们查
阅读全文
摘要:一、线程安全 1. 怎样让多线程下的类安全起来 无状态、加锁、让类不可变、栈封闭、安全的发布对象 2. 死锁 2.1 死锁概念及解决死锁的原则 一定发生在多个线程争夺多个资源里的情况下,发生的原因是每个线程拿到了某个(某些)资源不释放,同时等待着其他线程所持有的资源。 解决死锁的原则就是确保正确的获
阅读全文