使用lucene3.6创建索引和实现简单搜索

标签: lucene3 索引 搜索 | 发表时间:2012-04-22 21:04 | 作者:youyajie
出处:http://blog.csdn.net
使用lucene3.6的一个小例子,实现了索引的创建和简单的搜索。
代码如下:
package com.java.search;

import java.io.File;
import java.io.IOException;
import java.util.Date;

import org.apache.lucene.analysis.standard.StandardAnalyzer;
import org.apache.lucene.document.Document;
import org.apache.lucene.document.Field;
import org.apache.lucene.document.Field.Index;
import org.apache.lucene.document.Field.Store;
import org.apache.lucene.index.IndexReader;
import org.apache.lucene.index.IndexWriter;
import org.apache.lucene.index.IndexWriterConfig;
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.store.FSDirectory;
import org.apache.lucene.util.Version;

public class Searcher {
	public void test() throws IOException {
		File file = new File("f://youyajie");
		FSDirectory directory = FSDirectory.open(file);
		//用来创建索引
		IndexWriterConfig conf = new IndexWriterConfig(Version.LUCENE_36,
				new StandardAnalyzer(Version.LUCENE_36));
		IndexWriter writer = new IndexWriter(directory, conf);
	    
		Document doc1 = new Document();
		Document doc2 = new Document();
		Document doc3 = new Document();
		Document doc4 = new Document();
		Document doc5 = new Document();
		Document doc6 = new Document();
		Document doc7 = new Document();
		Document doc8 = new Document();
		
		Field f1 = new Field("bookname", "钢铁是怎样炼成的", Store.YES, Index.ANALYZED);
		Field f2 = new Field("bookname", "英雄儿女", Store.YES, Index.ANALYZED);
		Field f3 = new Field("bookname", "篱笆女人和狗", Store.YES, Index.ANALYZED);
		Field f4 = new Field("bookname", "格林童话", Store.YES, Index.ANALYZED);
		Field f5 = new Field("bookname", "钢和铁是两种金属", Store.YES, Index.ANALYZED);
		Field f6 = new Field("bookname", "白毛女", Store.YES, Index.ANALYZED);
		Field f7 = new Field("bookname", "钢的世界", Store.YES, Index.ANALYZED);
		Field f8 = new Field("bookname", "钢铁战士", Store.YES, Index.ANALYZED);
		
		doc1.add(f1);
		doc2.add(f2);
		doc3.add(f3);
		doc4.add(f4);
		doc5.add(f5);
		doc6.add(f6);
		doc7.add(f7);
		doc8.add(f8);
		
		writer.addDocument(doc1);
		writer.addDocument(doc2);
		writer.addDocument(doc3);
		writer.addDocument(doc4);
		writer.addDocument(doc5);
		writer.addDocument(doc6);
		writer.addDocument(doc7);
		writer.addDocument(doc8);
		
		writer.close();//一定要关闭writer,这样索引才能写到磁盘上
		
		IndexReader reader = IndexReader.open(directory);
		//简单索引
		IndexSearcher searcher = new IndexSearcher(reader);
		Term t = new Term("bookname", "钢");
	    TermQuery quenry = new TermQuery(t);
	    //获得得分靠前的两个匹配记录
	    ScoreDoc[] docs = searcher.search(quenry, 2).scoreDocs;
	    for(int i = 0; i < docs.length; i++) {
	    	Date start = new Date();
	    	String bookname = searcher.doc(docs[i].doc).get("bookname");
	    	Date end = new Date();
	    	System.out.println(bookname + (end.getTime() - start.getTime()) + "ms");
	    }
		
		}
	
	public static void main(String[] args) throws IOException {
		Searcher Test = new Searcher();
		Test.test();
	}


}
索引创建成功。
运行结果为:
钢的世界2ms
钢铁战士1ms


作者:youyajie 发表于2012-4-22 21:04:05 原文链接
阅读:11 评论:0 查看评论

相关 [lucene3 索引 搜索] 推荐:

uSniff:BT种子搜索引擎

- leqoqo - 软件志
一、uSniff相关信息: 1、官方主页:http://www.usniff.com/ 2、简介:uSniff是一个BT种子搜索引擎,简单、易用、实时是其最大的优点,其搜索引擎数据库包含了17个知名种子站点的种子信息,目的是想发展成为世界上最大的BT种子搜索引擎,而且对于每个种子,该搜索引擎都会进行安全认证,以保证用户的正常使用.

[原]搜索引擎索引之索引基础

- - 搜索引擎技术博客
                                                           本文节选自《 这就是搜索引擎:核心技术详解》第三章.        本节通过引入简单实例,介绍与搜索引擎索引有关的一些基础概念,了解这些基础概念对于后续深入了解索引的工作机制非常重要.

人眼启发视觉搜索引擎

- feng823 - Solidot
Google上周宣布将支持声音和图片进行搜索,但一家创业公司在图像搜索方面走在了Google前面. 源自伦敦帝国学院研究项目的创业公司Cortexica,开发出视觉搜索工具,通过手机拍摄产品照片,它会自动呈现价格信息. Cortexica已经发布了一个用于比较酒价格的工具WINEfindr. Cortexica的视觉搜索技术是受到了人眼视觉系统的启发,它能识别出一个目标的关键特征,不受方位、大小、光线亮暗的影响.

比较好的学术搜索引擎

- hfut_chen - C++博客-首页原创精华区
     摘要: 1、http://scholar.google.com/. Google学术搜索滤掉了普通搜索结果中大量的垃圾信息,排列出文章的不同版本以及被其它文章的引用次数. 略显不足的是,它搜索出来的结果没有按照权威度(譬如影响因子、引用次数)依次排列,在中国搜索出来的,前几页可能大部分为中文的一些期刊的文章.

Blekko 对搜索引擎的新探索

- thinkingit - 知乎的博客
Blekko 这款搜索产品做的如何. 从目前我的使用过程来看,Blekko还是很让人激动的. 在谈Blekko之前就要先问:为何在搜索这个看似已经垄断的行业还会有人想去分一杯羹,这些小团队能与Google或微软这样的巨头抗衡吗. 比如之前的Powerset,后来的Cuil,和现在的Blekko. 在Google之前Yahoo是靠人工收录网页,Google的算法和蜘蛛革了搜索的命,一直垄断搜索业十余年,而现在随着WEB 2.0的发展,让人又看到了搜索业革命的火种,可以说Blekko就是这样的一个产品.

Mr.Icons:图标icon搜索引擎

- 壮壮爱 - 够趣堂
之前Anliu在如何更换更好的icon文章里面推荐了4个icon搜索引擎,目前部分已经不复存在. 不过Mr.Icons倒是又一个不错的选择,可以搜索图标icon进行下载,有PNG、ico格式以及不同大小提供下载. Mr.Icons还提供图标icon集打包下载,比如动物图标等. 和之前的介绍几款搜索引擎一样,依然不支持中文.

迅搜全文搜索引擎 XunSearch

- Le - 开源中国社区最新软件
迅搜(xunsearch)是采用 C/C++ 基于 xapian 和 scws 开发的全文搜索引擎解决方案,提供 PHP 语言的开发接口. 支持海量数据高速检索,功能强大,简单易用. 本项目旨在帮助一般开发者针对既有的海量数据,快速而方便地建立自己的全文搜索引擎. 全文检索可以帮助您降低服务器搜索负荷、极大程度的提高搜索速度和用户体验.

搜索引擎的特殊用法

- iVane - 崔凯,前端开发
下周组内分享要讨论“工具”,介绍几个搜索引擎的特殊用法,凑凑数:. 通配符,这么搜可以得到“崔凯前端开发”,也能得到“崔凯大连开发” 崔凯*开发. 用于搜索查询词出现在URL中的页面. 由于关键词出现在URL中对排名有一定影响,因此使用inurl:搜索也是定位竞争对手的一种方式. 该指令搜索结果返回的是页面title中包含关键词的页面.

美国购物搜索引擎评测

- - 月光博客
  专注于购物搜索引擎领域的CPCStrategy在其博客中对美国众多流行的购物搜索引擎在2012年第一季度的流量、收入以及转化率等方面进行了全面的分析与对比,其中的一些发现不管是对商家还是消费者都非常有价值. 我们对其进行了编译,希望对大家有帮助.   这项分析的数据样本主要来自CPCStrategy的100多位客户,涵盖约427万次点击,约8.3万张订单,约116万美金的营销成本以及所带来的约787万美金的收入.

如何高效使用搜索引擎

- - IT技术博客大学习
   把搜索词放在双引号中,代表完全匹配搜索,也就是说搜索结果返回的页面包含双引号中出现的所有的词,连顺序也必须完全匹配. bd和Google 都支持这个指令. 例如搜索: “javar高性能程序开发”.    减号代表搜索不包含减号后面的词的页面. 使用这个指令时减号前面必须是空格,减号后面没有空格,紧跟着需要排除的词.