1.  索引——好比字典的索引一样,进行查询时使用

2. Field.Index.NO 则没有索引,则不能被搜索

3.

第三章

PhraseQuery 短语查询

按照顺序添加term

PharseQuery 短语查询的评分:

public class App
{
public static void main( String[] args ) throws IOException, ParseException
{
Directory dir = new RAMDirectory();
IndexWriterConfig conf = new IndexWriterConfig(new WhitespaceAnalyzer());
IndexWriter writer = new IndexWriter(dir, conf);
Document doc = new Document();
doc.add(new TextField("text", "lazy dog jump over cat", Field.Store.YES));
writer.addDocument(doc); doc = new Document();
doc.add(new TextField("text", "lazy haha dog lala jump ooo over this cat", Field.Store.YES));
writer.addDocument(doc); doc = new Document();
doc.add(new TextField("text", "dog lazy haha pig lala jump ooo over this cat", Field.Store.YES));
writer.addDocument(doc); IndexReader reader = DirectoryReader.open(writer, true);
IndexSearcher searcher = new IndexSearcher(reader); // Query query = new MatchAllDocsQuery(); QueryParser parser = new QueryParser("text", new WhitespaceAnalyzer());
parser.setDefaultOperator(Operator.AND);
Query query = parser.parse("\"dog cat\"~5");
System.out.println("query["+query.toString()+"]"); TopDocs hits = searcher.search(query, 10);
System.out.println(hits.totalHits);
ScoreDoc[] docs = hits.scoreDocs;
for(ScoreDoc scoreDoc : docs){
int docID = scoreDoc.doc;
float score = scoreDoc.score;
Document docu = searcher.doc(docID);
System.out.println(docID+" - "+score+" - "+docu.get("text"));
}
}
}

  经测试,

  首先,只返回符合条件的查询结果。如:查找slop=2的,那么项间距大于2的不会被检索到。

  其次,短语查询不是布尔查询。它根据匹配所需要的编辑距离来进行评分。返回的结果中,项之间距离越小,评分越高,排序越靠前

   最后,松散的短语查询不需要按照顺序进行匹配,但是SpanNearQuery能够确保按照顺序匹配。

第四章 分析器

同义词过滤器实现:

直观想法是在有同义词的位置插入同义词,位置增量为0.

实现起来和直观想法不一样,因为TokenStream是流。具体实现的思路是:

incrementToken每一次执行打印一个token, 我们应该是在有同义词的token的下一个token打印出需要插入的同义词。

判断有同义词- 》存储到缓存, 下一次循环 -》先判断缓存是否有需要展示的同义词, 有则打印。

  

  

lucene in action的更多相关文章

  1. 《Lucene in Action 第二版》第4章节 学习总结 -- Lucene中的分析

    通过第四章的学习,可以了解lucene的分析过程是怎样的,并且可以学会如何使用lucene内置分析器,以及自定义分析器.下面是具体总结 1. 分析(Analysis)是什么? 在lucene中,分析就 ...

  2. 《Lucene in Action第二版》学习总结---如何在Windows下编译luceneinAction2Edition源码包

    1. 下载此源码包,位置是: www.manning.com/hatcher3,得到:lia2e.tar.gz,然后解压缩得到目录:lia2e,为了以后能辨识,我将此目录改名为:luceneinAct ...

  3. 《Lucene in Action》(第二版) 第二章节的学习总结 ---- IndexWriter+Document+Field

    这一章节的学习,主要是学会如何创建索引,使用索引 一.创建索引 1.从原始文件中提取内容.这里的文件,可以是文本文件,也可以是二进制文件.文本文件(txt),lucene可以直接处理:而二进制文件(w ...

  4. 《Lucene in Action》(第二版) 第一章节的学习总结 ---- 用最少的代码创建索引和搜索

    第一章节是介绍性质,但是通过这一章节的学习,我理解到如下概念: 1.Lucene由两部分组成:索引和搜索.索引是通过对原始数据的解析,形成索引的过程:而搜索则是针对用户输入的查找要求,从索引中找到匹配 ...

  5. Lucene in action 笔记 term vector——针对特定field建立的词频向量空间,不存!不会!影响搜索,其作用是告诉我们搜索结果是“如何”匹配的,用以提供高亮、计算相似度,在VSM模型中评分计算

    摘自:http://makble.com/what-is-term-vector-in-lucene given a document, find all its terms and the posi ...

  6. 《Lucene in Action 第二版》第三章节的学习总结----IndexSearcher以及Term和QueryParser

    本章节告诉我们怎么用搜索.通过这章节的学习,虽然搜索的内部原理不清楚,但是至少应该学会简单的编写搜索程序了本章节,需要掌握如下几个主要API1.IndexSearcher类:搜索索引的门户,发起者. ...

  7. Lucene的分析资料【转】

    Lucene 源码剖析 1 目录 2 Lucene是什么 2.1.1 强大特性 2.1.2 API组成- 2.1.3 Hello World! 2.1.4 Lucene roadmap 3 索引文件结 ...

  8. 【手把手教你全文检索】Apache Lucene初探

    PS: 苦学一周全文检索,由原来的搜索小白,到初次涉猎,感觉每门技术都博大精深,其中精髓亦是不可一日而语.那小博猪就简单介绍一下这一周的学习历程,仅供各位程序猿们参考,这其中不涉及任何私密话题,因此也 ...

  9. Apache Lucene学习笔记

    Hadoop概述 Apache lucene: 全球第一个开源的全文检索引擎工具包 完整的查询引擎和搜索引擎 部分文本分析引擎 开发人员在此基础建立完整的全文检索引擎 以下为转载:http://www ...

随机推荐

  1. [转]Hexo博客添加访问统计 - 记录

    引入不蒜子 <script async src="//dn-lbstatics.qbox.me/busuanzi/2.3/busuanzi.pure.mini.js"> ...

  2. Linux C++线程池实例

    想做一个多线程服务器测试程序,因此参考了github的一些实例,然后自己动手写了类似的代码来加深理解. 目前了解的线程池实现有2种思路: 第一种: 主进程创建一定数量的线程,并将其全部挂起,此时线程状 ...

  3. java csv list cant not repeat

    require: /** * before: * file A1.csv {1,2,3,4,5} * file A2.csv {2,3,9,10,11} * file B1.csv {5,12,13, ...

  4. windbg*****************************TBD

    achieve structure from a simple address Dt address know pending IRP in a module !thread xxxxxx到底能提供哪 ...

  5. struts2 下载文件

    作者:禅楼望月 当下载的文件名字中不含有汉字,或者下载的文件不需要考虑用户的权限问题时.直接让超链接的href属性为所要下载的文件名即可.否则最好使用struts2的文件下载机制. 以下载图片为例 完 ...

  6. hdu DIY FLIGHT GAME (dfs)

    FLIGHT GAME Time Limit : 3000/1000ms (Java/Other)   Memory Limit : 65535/32768K (Java/Other) Total S ...

  7. 第一个贴上XMT标签的Hadoop程序

    距离老板留给我并行化做属性约简的任务开始到今天,已是一周有余,期间经历过各种呕心沥血,通宵达旦,终于运行出了一个结果.其中在配置过程中,浪费了爷大量的时间,有时回想自己上个周干的事情,会觉得分明的本末 ...

  8. BZOJ1927 [Sdoi2010]星际竞速 【费用流】

    1927: [Sdoi2010]星际竞速 Time Limit: 20 Sec  Memory Limit: 259 MB Submit: 2582  Solved: 1601 [Submit][St ...

  9. [POJ2777] Count Color

    \[Count Color\] Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 50865 Accepted: 15346 Des ...

  10. eclipse安装反编译插件jadclipse

    下载jadClipse地址: 目的:将一些封装的jar或者sdk可以查看源代码 链接: http://pan.baidu.com/s/1kTN4TPd  提取码: 3fvd 将net.sf.jadcl ...