lucene学习笔记(一)

package l002;

import java.io.File;
import java.io.IOException;

import org.apache.lucene.analysis.Analyzer;
import
org.apache.lucene.analysis.standard.StandardAnalyzer;
import
org.apache.lucene.document.Document;
import
org.apache.lucene.document.StringField;
import
org.apache.lucene.document.TextField;
import
org.apache.lucene.document.Field.Store;
import
org.apache.lucene.index.IndexWriter;
import
org.apache.lucene.index.IndexWriterConfig;
import
org.apache.lucene.store.Directory;
import
org.apache.lucene.store.FSDirectory;
import
org.apache.lucene.util.Version;

public class IndexFile1 {
protected String[] ids={"1", "2"};

protected String[] content={" I LOVE you", " I LOVE you"};

protected String[] city={"Amsterdam", "Venice"};

private Directory dir;
/**
* 初始化添加文档
* @throws
IOException
*/
public void init() throws IOException{
String pathFile =
"D://lucene//index";
dir = FSDirectory.open(new
File(pathFile));
IndexWriter writer = getWriter();
for (int i = 0; i <
ids.length; i++) {
Document doc=new Document();
doc.add(new
StringField("id", ids[i], Store.YES));
doc.add(new TextField("content",
content[i], Store.YES));
doc.add(new StringField("city", city[i],
Store.YES));
writer.addDocument(doc);
}
System.out.println("init
ok");
writer.close();
}
/*
* 获取indexWriter对象
*/
private
IndexWriter getWriter() throws IOException {
Analyzer analyzer=new
StandardAnalyzer(Version.LUCENE_40);
IndexWriterConfig iwc=new
IndexWriterConfig(Version.LUCENE_40, analyzer);
return new IndexWriter(dir,
iwc);
}
}

package l002;

import java.io.File;
import java.io.IOException;

import org.apache.lucene.document.Document;
import
org.apache.lucene.index.DirectoryReader;
import
org.apache.lucene.index.IndexReader;
import
org.apache.lucene.index.Term;
import
org.apache.lucene.search.IndexSearcher;
import
org.apache.lucene.search.ScoreDoc;
import
org.apache.lucene.search.TermQuery;
import
org.apache.lucene.search.TopDocs;
import
org.apache.lucene.store.Directory;
import
org.apache.lucene.store.FSDirectory;

public class IndexSearch1 {
public void search() throws
IOException{
String pathFile = "D://lucene//index";
Directory dir =
FSDirectory.open(new File(pathFile));
IndexReader reader =
DirectoryReader.open(dir);
IndexSearcher searcher = new
IndexSearcher(reader);
Term term = new Term("content","i");
TermQuery
query = new TermQuery(term);
TopDocs topDocs = searcher.search(query,
5);
ScoreDoc[] scoreDocs =
topDocs.scoreDocs;
System.out.println("查询结果总数----"+topDocs.totalHits+"
最大的评分----"+topDocs.getMaxScore());
for (int i = 0; i < scoreDocs.length;
i++) {
int doc = scoreDocs[i].doc;
Document document =
searcher.doc(doc);
System.out.println("content"+document.get("content"));
System.out.println("id--"+doc+"---scors--"+scoreDocs[i].score+"----idx----"+scoreDocs[i].shardIndex);
}
reader.close();
};
public
static void main(String[] args) throws Exception {
// IndexFile1 file = new
IndexFile1();
// file.init();
IndexSearch1 search = new
IndexSearch1();
search.search();
}
}

时间: 2024-08-28 15:25:27

lucene学习笔记(一)的相关文章

lucene学习笔记(三)

好几天没更新了.更新一下,方便自己和大家学习. 这是最基本的代码 package index; import java.io.File; import java.io.IOException; import java.util.HashMap; import java.util.Map; import org.apache.lucene.analysis.standard.StandardAnalyzer; import org.apache.lucene.document.Document;

lucene学习笔记(二)

package index; import java.io.File; import java.io.IOException; import org.apache.lucene.analysis.standard.StandardAnalyzer; import org.apache.lucene.document.Document; import org.apache.lucene.document.Field; import org.apache.lucene.index.CorruptIn

Lucene学习笔记(1)

下载:http://lucene.apache.org lucene项目的Java子项目:http://lucene.apache.org/java Lucene学习笔记 查询者输入查询条件,条件之间可以通过特定运算符进行运算,比如查询希望查询到与“中国”和“北京”相关的记录,但不希望结果中包括“海淀区中关村”,于是输入条件为“中国+北京-海淀区中关村”: 把IndexWriter想象成让你可以对索引进行写操作的对象. 在一个文档被索引之前,首先需要对文档内容进行分词处理,并且而剔除一些冗余的词

Lucene学习笔记: 五,Lucene搜索过程解析

一.Lucene搜索过程总论 搜索的过程总的来说就是将词典及倒排表信息从索引中读出来,根据用户输入的查询语句合并倒排表,得到结果文档集并对文档进行打分的过程. 其可用如下图示: 总共包括以下几个过程: IndexReader打开索引文件,读取并打开指向索引文件的流. 用户输入查询语句 将查询语句转换为查询对象Query对象树 构造Weight对象树,用于计算词的权重Term Weight,也即计算打分公式中与仅与搜索语句相关与文档无关的部分(红色部分). 构造Scorer对象树,用于计算打分(T

Lucene学习笔记

师兄推荐我学习Lucene这门技术,用了两天时间,大概整理了一下相关知识点. 一.什么是Lucene Lucene即全文检索.全文检索是计算机程序通过扫描文章中的每一个词,对每一个词建立一个索引,指明该词在文章中出现的次数和位置.当用户查询时根据建立的索引查找,类似于通过字典的检索字表查字的过程. 二.Lucece全文检索和数据库检索的区别 三.Lucene的原理 (1)索引库操作原理 注意:这里面有两个关键的对象:分别是IndexWriter和IndexSearcher. 执行增删改操作用的是

Lucene学习笔记(一)

一.什么是lucene 官方的理解:全文检索首先是将要查询的目标文档中的词提取出来,组成索引,通过查询索引达到搜索目标文档的目的,这种先建立索引,在根据索引搜索文档的过程叫做全文检索 自身理解:也就类似于使用字典的过程,而索引就是字典的索引目录,方便我们来查询汉字. Lucene是什么:Lucene是appache下的一个开源全文检索的引擎工具包,通过这个简单易用的工具包,可以快速开发全文检索应用. 全文检索应用:搜索引擎(例如:百度,谷歌).站内搜索(京东的商品搜索).文件搜索等. Lucen

lucene学习笔记二(基于数组的lucene检索,索引删除)

构建数组: private String[] ids = {"1","2","3","4","5","6"}; private String[] emails = {"[email protected]","[email protected]","[email protected]","[email protected

lucene学习笔记四(分页查询)

/**  * 根据页码和分页大小获取上一次最后一个ScoreDoc  * @param pageIndex  * @param pageSize  * @param query  * @param indexSearcher  * @return  * @throws IOException  */ private ScoreDoc getLastScoreDoc(int pageIndex,int pageSize,Query query,IndexSearcher indexSearcher

Hadoop学习笔记_2_Hadoop源起与体系概述[续]

Hadoop源起与体系概述 Hadoop的源起--Lucene Lucene是Doug Cutting开创的开源软件,用java书写代码,实现与Google类似的全文搜索功能,它提供了全文检索引擎的架构,包括完整的查询引擎和索引引擎 早期发布在个人网站和SourceForge,2001年年底成为apache软件基金会jakarta的一个子项目 Lucene的目的是为软件开发人员提供一个简单易用的工具包,以方便的在目标系统中实现全文检索的功能,或者是以此为基础建立起完整的全文检索引擎 对于大数据的