java 代码
- public interface SearchManager {
- public boolean isSearchEnabled();
- public void setSearchEnabled(boolean searchEnabled);
- /**
-
- public boolean isBusy();
-
- public int getPercentComplete();
-
-
- public boolean isAutoIndexEnabled();
- public void setAutoIndexEnabled(boolean value);
-
- public int getAutoIndexInterval();
- public void setAutoIndexInterval(int minutes);
-
- public Date getLastIndexedDate();
-
- public void addToIndex(ForumMessage message);
- public void removeFromIndex(ForumMessage message);
-
- public void updateIndex();
-
- public void rebuildIndex();
-
- public void optimize();
- }
· IndexWriter用户建立新的索引,当然也可以将文档加入已经存在的索引。
在文本被索引之前,它必须通过一个分析器Analyzer。分析器Analyzer 负责从文本中分离出索引关键字。Lucene有几种不同类型的分析器:
· SimpleAnalyzer是将英文转换为小写字母,按空格和标点符号切分出英文单词,
如I am Java这一句,使用SimpleAnalyzer切词就会切分出下列词语:
token1=I
token2=am
token3=Java
· StandardAnalyzer是对英文进行了较为复杂的处理。除了按词语建立索引关键字(token)外,还能够为特殊名称、邮件地址、缩写格式等建立索引单元,而且对“and”、“ the”等词语做了过滤。
· ChineseAnalyzer是专门用来分析中文的索引的。关于中文分析器,有很多尝试,如车东的http://sourceforge.net/projects/weblucene/;等,该问题将在后面章节继续讨论。
一个索引是由一系列Document组成,每个Document是由一个或多个Field组成,每个Field都有一个名字和值,可以把Document作为关系数据库中一条记录,而Field则是记录中某列字段。一般建立索引如下:
java 代码
-
- String indexDir = "/home/";
-
- String text = "welcom here, I am Java,";
- Analyzer analyzer = new StandardAnalyzer();
-
- IndexWriter writer = new IndexWriter(indexDir, analyzer, true);
-
- Document document = new Document();
-
- document.add(Field.Text("fieldname", text));
-
- writer.addDocument(document);
- writer.close();
其中,Field根据具体要求有不同用法,Lucene提供4种类型的Field: Keyword、 UnIndexed、 UnStored和 Text。
· Keyword 不实现切词,逐字地保存在索引中,这种类型适合一些如URL、日期、个人姓名、社会安全号码、电话号码等需要原封不动保留的词语。
· UnIndexed既不实现切词也不索引,但是其值是一个词一个词地保存在索引中,这不适合很大很长的词语,适合于显示一些不经过直接搜索的结果值。
· UnStored与UnIndexed正好相反,将被切词和索引,但是不保存在索引中,这适合巨大文本,如帖子内容、页面内容等。
· Text是实现切词、索引,并且保存在索引中。
上面是建立或者添加索引,那么如何删除索引呢?
建立索引后,每个所有对应一个org.apache.lucene.index.Term对象,那么可以根据索引的KEYWORD创建一个Term对象,
- Term messageIDTerm =new Term("mID", Long.toString(indexId));
然后:
IndexReader reader = IndexReader.open(indexDir);
通过IndexReader的delete方法删除指定的索引
reader.delete(messageIDTerm);
这里,建立索引的时候,keyword名称指定为mID
(2)建立完成后,就可以直接搜索特定的词语了。搜索语句一般代码如下:
Searcher searcher = new IndexSearcher((indexDir); //创建一个搜索器
也可以这样创建:
- Directory searchDirectory = FSDirectory.getDirectory(indexPath, false);
- IndexReader reader = IndexReader.open(searchDirectory);
- Searcher searcher = new IndexSearcher(reader);
//使用和索引同样的语言分析器
Query query = QueryParser.parse(queryString, "body", new StandardAnalyzer());
//搜索结果使用Hits存储
Hits hits = searcher.search(query);
//通过hits得到相应字段的数据和查询的匹配度
for (int i=0; i
System.out.println(hits.doc(i).get("fieldname "));
};
相关推荐
lucene的应用.pdf 01solr企业级搜索引擎准备阶段.pdf 02solr企业级搜索引擎实战演练.pdf 适合新手搭建solr使用
Lucene的简单介绍,也介绍了搜索的原理,非常简短,适合入门的使用
本文是整理的关于lucene的一些简单的介绍,以及对于lucene的简单的使用。
lucene索引简单介绍有简单的文字和图像
x-oss-process=style/pnp8(39.97KB,下载次数:225)下载附件2019-10-2502:02上传〖课程介绍〗:Lucene是apache下的一个开放源代码的全文检索引擎工具包。提供了完整的查询引擎和索引引擎。Lucene的目的是为软件开发人员...
Lucene是一个基于Java的全文索引工具包。 基于Java的全文索引引擎Lucene...另外,如果是在选择全文引擎,现在也许是试试Sphinx的时候了:相比Lucene速度更快,有中文分词的支持,而且内置了对简单的分布式检索的支持
在本套课程中,我们将全面的讲解Lucene技术,从简单应用到细节使用再到底层原理都有深入讲解。尤其对Lucene底层的存储结构,搜索算法,以及数据结构等晦涩难懂的知识做深入浅出式讲解。学习Lucene对日后学习它的下游...
简单的介绍在HDFS中使用lucene完成索引和搜索的代码实例
至于这个lucene就不多介绍了,要做搜索引擎的朋友肯定都了解的!他提供的是一组搜索引擎的核心的api,调用简单,功能强大!
是lucene的简单介绍,帮你快速了解lucene技术
1. Lucene介绍与入门使 2. 解决windows10和u 3. 在一台电脑上运行两 4. WebService的简单介 1. Lucene介绍与入门使
本文主要是研究了全文检索技术的基本原理以及Lucene的架构和工作原理,并介绍了基于Lucene的实时全文检索引擎的设计实现过程。并提供了一个基于Web的简单实现。最后通过实验的方式,对实现的实时全文检索引擎的性能...
这个是一个lucene的简单介绍,希望能对你有所帮助,欢迎一起学习讨论。
用简单的例子介绍了Lucene的最新应用方法,包括完整的搜索实现过程:从完成索引到搜索用户界面的实现。此外还进一步介绍了实现准实时搜索的方法,展示了Solr的用法以及实现分布式搜索服务集群的方法。最后介绍了在...
利用hadoop的mapreduce和Hbase,基于lucene做的简单的搜索引擎 ## 基本介绍 - InjectDriver 将本地的url注入到hbase数据库中等待下一步执行 - FetchDriver 负责抓取url对应的网页内容 - ParserUrlDriver 解析所抓取...
lucene入门相关知识,包括基本介绍、简单示例、核心API介绍。
本书总结搜索引擎相关理论与实际解决方案,并给出了Java实现,其中利用了流行的开源项目Lucene和Solr,而且还包括...用简单的例子介绍了Lucene的应用方法,包括完整的搜索实现过程:从完成索引到搜索用户界面的实现。
lucene-简单示例介绍,可提供初级的api,实现全文检索功能
lucene是一套Java API,它不是一个独立的搜索引擎系统,但是你可以使用lucene开发搜索引擎系统。... 在这里我是和大家共同讨论学习lucene,前些日子我先简单的学习了一下,下面给大家具体的介绍一下lucene.