设为首页 收藏本站
| 数控仿真 | 技术文章 | 公路造价 | 文档管理软件 |
| 幸运之门彩票网 | 彩票新闻 | 免费招聘 | 百科问吧 | 百姓族谱 | 小游戏网 |
“罗马俱乐部”是由意大利商界巨头帕塞伊组建的什么?
文档管理 | 数据库技术 | 全文检索 | 中文分词 | 文件格式 | Lucene | FireBird | IIS | 免费小游戏 | 彩票论坛
Google
北京紫气东来网络公司 > 技术文章 > Lucene > 一个例子学懂搜索引擎(LUCENE)
全文检索 | Lucene |
一个例子学懂搜索引擎(LUCENE)

发表:北京紫气东来网络公司www.chianwiss.com,本文被阅读:1
其实,lucene是一个很容易上手的搜索引擎框架,传统的搜索引擎,涉及到爬虫,也就是爬取网页,然后对网页进行加工,也就是索引,最后用于搜索,lucene这个框架可以很方便的帮你做到后面两个步骤,也就是索引和搜索!本文尝试通过一个例子,使大家掌握lucene的使用核心方法,包括分词、索引、搜索不同的目录、搜索不同的域,希望大家通过这个实例,对lucene和搜索引擎能有比较全面的认识!

package cn.soft;

import org.apache.lucene.analysis.standard.StandardAnalyzer;
import org.apache.lucene.document.Document;
import org.apache.lucene.document.Field;
import org.apache.lucene.index.IndexWriter;
import org.apache.lucene.queryParser.MultiFieldQueryParser;
import org.apache.lucene.search.BooleanClause;
import org.apache.lucene.search.Hits;
import org.apache.lucene.search.IndexSearcher;
import org.apache.lucene.search.MultiSearcher;
import org.apache.lucene.search.Query;

/**
* 这个实例包含了lucene所有的核心用法
* @author 李亮
*
*/
public class LuneceTest {

public LuneceTest(){

}
/**
* @param args
*/
public static void main(String[] args) {
try{
LuneceTest test = new LuneceTest();
test.index();
test.search("一");
}catch(Exception e){
e.printStackTrace();
}
System.out.println("OK");
}

/**
* 创建索引
*/
public void index() throws Exception{
/**
* 创建索引初始化,执行这些语句将创建或清空d:\\save\\目录下所有索引
*/
IndexWriter writeOne = new IndexWriter("d:\\save\\",new StandardAnalyzer(),true);
writeOne.close();

/**
* 往创建的初始化索引中添加内容,StandarAnalyzer表明用lunece自带的标准分词机制。
* false标示不覆盖原来该目录的索引
*/
IndexWriter writeTwo = new IndexWriter("d:\\save\\",new StandardAnalyzer(),false);
/* 创建一份文件 */
Document docOne = new Document();
/**
* 创建一个域 ArticleTitle,并往这个域里边添加内容,"Field.Store.YES" 表示该域里面的内容将被存储到索引
* Field.Index.TOKENIZED表示该域里的内容将被索引,以便用来搜索
*/
Field fieldOne = new Field("ActicleTitle","北京2008奥运会",Field.Store.YES,Field.Index.TOKENIZED);
docOne.add(fieldOne);

/* 创建另外一个域ActicleTitle,并往这个域里添加内容 */
Field fieldTwo = new Field("ActicleText","这是一届创造奇迹、超越梦想的奥运会....",Field.Store.YES,Field.Index.TOKENIZED);
docOne.add(fieldTwo);

/* 添加这份文件到索引 */
writeTwo.addDocument(docOne);

/* 同理,创建第二份文件 */
Document docTwo = new Document();
fieldOne = new Field("ActicleTitle","奥运会中国获得全球赞誉",Field.Store.YES,Field.Index.TOKENIZED);
docTwo.add(fieldOne);
fieldTwo = new Field("ActicleText","中国所获取的金牌总数排行榜的榜首第一位...",Field.Store.YES,Field.Index.TOKENIZED);
docTwo.add(fieldTwo);

writeTwo.addDocument(docTwo);

writeTwo.close();
}
public void search(String searchString) throws Exception{
/* 创建一个搜索,搜索刚才创建的d:\\save\\目录下的索引 */
IndexSearcher indexSearcher = new IndexSearcher("d:\\save\\");
/* 在这里我们只需要搜索一个目录 */
IndexSearcher indexSearchers[] = {indexSearcher};

/* 我们需要搜索两个域 "ActicleTitle" , "ActicleText"里面的内容 */
String[] fields = {"ActicleTitle","ActicleText"};

/* 下面这个表示要同时搜索这两个域,而且只要一个域里面有满足我们搜索的内容就行 */
BooleanClause.Occur[] clauses = {BooleanClause.Occur.SHOULD,BooleanClause.Occur.SHOULD};

/**
* MultiFieldQueryParser表示多个域解析
* 同时可以解析含空格的字符串,如果我们搜索"中国 金牌",根据前面的索引,显然搜到的是第二份文件
*/
Query query = MultiFieldQueryParser.parse(searchString,fields,clauses,new StandardAnalyzer());
/* MultiSearcher表示多目录搜索,在这里我们只有一个目录 */
MultiSearcher searcher = new MultiSearcher(indexSearchers);

/* 开始搜索 */
Hits h = searcher.search(query);
/* 把所搜出来的所有文件打印出来 */
for(int i=0;i<h.length();i++){
/* 打印出文件里面ArticleTitle域里面的内容 */
System.out.println(h.doc(i).get("ActicleTitle"));
/* 打印出文件里面ActicleText域里面的内容 */
System.out.println(h.doc(i).get("ActicleText"));
}
searcher.close();
}
}

wiss文档协同系统三分钟解决一切文档管理的烦恼,帮您完成公司文档到资产的转变!!!
更多功能欢迎访问 http://www.chinawiss.com
 北京紫气东来网络公司 > 技术文章 > Lucene
·用LUCENE为数据库搜索建立增量索引 (4)
·LUCENE 索引数据库 (4)
·ANNOTATED LUCENE(中文版) (3)
·LUCENE索引文件格式分析 (22)
·LUCENE系统结构分析 (15)
·用LUCENE为数据库搜索建立增量索引 (4)
·LUCENE 索引数据库 (4)
·一个关于FIREBIRD数据库的SQL查询方法 (4)
·ANNOTATED LUCENE(中文版) (3)
·LUCENE索引文件格式分析 (22)
·LUCENE系统结构分析 (15)
·LUCENE的应用、特点及优势 (14)
 最新文章
·什么叫关键字密度?
·搜索引擎的索引和搜索
·BAIDU分词算法分析之一
·中文分词和搜索引擎
·中文分词算法精髓上
·中文分词的应用
·分词中的难题
·中文分词技术
·中文分词和搜索引擎
·什么是中文分词
·一个例子学懂搜索引擎(LUCENE)
·用LUCENE为数据库搜索建立增量索引
·LUCENE 索引数据库
·一个关于FIREBIRD数据库的SQL查询方法
·MSSQL数据库转到FIREBIRD数据库的问题
·FIREBIRD的备份工具(NBACKUP)介绍
·FIREBIRD常用SQL
·FIREBIRD/INTERBASE内置函数使用说明
·用了下FIREBIRD,发现真的不错哦
·FIREBIRD数据库的修复
·数据库中LOW CACHE RBA和ON DISK RBA的区
·使用DB2DART降低管理表空间的高水位标记
·快速了解数据仓库及数据建模的常用新术语
·国外数据中心流行“液冷门”
·IT业成为压力最大行业之一
·软件测试工程师笔试题中数据库试题集锦
·数据库开发程序员在开发过程中的注意事项
·带你深入了解高效的内存数据库系统FASTD
·使用链接服务器在异构数据库中查询数据
·数据库审计系统核心指标浅析
·设计应用程序时避免阻塞的八个准则
·ORACLE新手经常碰到的六个错误及解决方案
·嵌入式数据库的现状和未来
·分区表、分区索引和全局索引
·开源数据库SHARDING技术
·甲骨文数据库涨价18% IBM降价抢客户
·数据库的三重境界
·浅谈数据库管理系统在近些年内的发展趋势
·数据库技术的发展趋势
·WISS“三不”原则 引发内容管理新变革
·WISS:企业文档管理的百元级解决方案
·中文搜索引擎技术揭密:中文分词
·ANNOTATED LUCENE(中文版)
·FIREBIRD数据库介绍
·网络查找文档比自己电脑上还方便?
·刑侦角度看搜索
·论数据库技术的发展史
·老板的权利 员工的负担?
·论数据库技术的发展史
·"金沙"文档,掀起企业淘金热
 热门文章
·PDF转成WORD TXT EXCEL RTF软件
·JAVA抽取WORD和PDF格式文件的四种武器
·对PDF文件的文本抽取(PDFBOX处理中文PDF
·PDF与WORD之间提取和转换经验浅谈
·用C#制作PDF文件全攻略
·希望PDFLIB TET― 理想的文本提取软件包
·LUCENE索引文件格式分析
·从HTML文件中抽取正文的简单方案
·天灾还是人祸,让你知道最爱是谁?
·全文检索概念
·LUCENE系统结构分析
·LUCENE的应用、特点及优势
·中文搜索引擎技术揭密:网络蜘蛛
·DELPHI自动化控制EXCEL
·DELPHI与WORD之间的融合技术
·C#抽取WORD文档内容
·VC实现类似EXCEL文件夹式样的标签控制
·用DELPHI编制WINDOWS95下的钩子函数
·网页搜索引擎竞争分析
·刑侦角度看搜索
·信息检索的核心支撑技术
·真正搜索高手
·搜索引擎优化
·JDBC HIBERNATE 连接数据库连接字符串大
·搜索引擎ANTISPAM系统设计指南
·用DELPHI编制WINDOWS95下的钩子函数
·全文检索概念
·垂直搜索引擎的选型
·论数据库技术的发展史
·"金沙"文档,掀起企业淘金热
免费小游戏
宠物连连看

真人美女换装

美女脱衣服

美女胴体猜猜看

调戏床上美女

黄金矿工
“罗马俱乐部”是由意大利商界巨头帕塞伊组建的什么?
| 2008-09-01 | 首页 | 功能介绍 | 免费下载 | 产品购买 | 在线服务 | 典型应用 | 技术文章 | 联系我们 |