lucene最主要就是做两件事:建立索引和进行搜索来看一些在lucene中使用的术语,这里并不打算作详细的介绍,只是点一下而已----因为这一个世界有一种好东西,叫搜索。
IndexWriter:lucene中最重要的的类之一,它主要是用来将文档加入索引,同时控制索引过程中的一些参数使用。
Analyzer:分析器,主要用于分析搜索引擎遇到的各种文本。常用的有StandardAnalyzer分析器,StopAnalyzer分析器,WhitespaceAnalyzer分析器等。
Directory:索引存放的位置;lucene提供了两种索引存放的位置,一种是磁盘,一种是内存。一般情况将索引放在磁盘上;相应地lucene提供了FSDirectory和RAMDirectory两个类。
Document:文档;Document相当于一个要进行索引的单元,任何可以想要被索引的文件都必须转化为Document对象才能进行索引。
Field:字段。
IndexSearcher:是lucene中最基本的检索工具,所有的检索都会用到IndexSearcher工具;
Query:查询,lucene中支持模糊查询,语义查询,短语查询,组合查询等等,如有TermQuery,BooleanQuery,RangeQuery,WildcardQuery等一些类。
QueryParser: 是一个解析用户输入的工具,可以通过扫描用户输入的字符串,生成Query对象。
Hits:在搜索完成之后,需要把搜索结果返回并显示给用户,只有这样才算是完成搜索的目的。在lucene中,搜索的结果的集合是用Hits类的实例来表示的。
import java.io.IOException;
import java.io.StringReader;
import org.apache.lucene.analysis.Analyzer;
import org.apache.lucene.analysis.Token;
import org.apache.lucene.analysis.TokenStream;
import org.apache.lucene.analysis.standard.StandardAnalyzer;
public class StandardAnalyzerTest{
//构造函数,
public StandardAnalyzerTest(){
}
public static void main(String[] args){
//生成一个StandardAnalyzer对象
Analyzer aAnalyzer = new StandardAnalyzer();
//测试字符串
StringReader sr = new StringReader("lighter javaeye com is the are on");
//生成TokenStream对象
TokenStream ts = aAnalyzer.tokenStream("name", sr);
try {
int i=0;
Token t = ts.next();
while(t!=null){
//辅助输出时显示行号
i++;
//输出处理后的字符
System.out.println("第"+i+"行:"+t.termText());
//取得下一个字符
t=ts.next();
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
分享到:
相关推荐
以下是一段简单的示例代码,演示如何使用Lucene创建索引并进行检索: ```java public class LuceneExample { private void createIndex(String indexPath) throws Exception { // 创建IndexWriter实例 ...
- **搜索模块**:实现基于关键字的搜索功能,并通过Lucene的API实现高效的查询。 - **相似度计算**:采用余弦相似度算法计算两篇文档之间的相似度。 - **聚类分析**:使用K-Means算法对文档进行聚类,便于文档的...
- **搜索逻辑实现**:通过解析用户输入的关键字,利用Lucene提供的查询分析器(QueryParser)构造查询语句,并通过`IndexSearcher`执行查询操作来获取匹配的文档列表。 - **结果展示**:搜索结果通常会按照相关性...
- `NO`:表示字段既不被索引也不被存储,通常不常用。 #### 四、索引文件结构 - **segments**:索引文件的基本单位,每个段包含了一部分文档的信息。 - `_0.fnm`:存储字段名。 - `_0.fdt`/`_0.fdx`:分别存储...
IndexModifier是Lucene提供的一个类,它封装了IndexWriter和IndexReader的常用方法,并在内部实现了多线程同步锁定。 - **使用相同的Directory对象**:IndexWriter、IndexReader、IndexModifier和IndexSearcher应尽...
- 支持多种查询方式,如关键字搜索、语音搜索等。 - 能够根据用户的查询历史和偏好提供个性化搜索结果。 **1.3 你也可以做搜索引擎** - **构建搜索引擎的步骤:** - 网络爬虫:自动抓取网页内容。 - 数据处理...
**Elasticsearch** 是一款基于 **Lucene** 的开源搜索引擎,它支持分布式、多租户的全文检索功能,并且能够高效地处理大量数据的存储、搜索和分析需求。作为一个高度可扩展的解决方案,Elasticsearch 在众多企业级...
### Java常用Lib库说明 #### Proxool连接池 在Java开发中,数据库连接池是一项重要的技术,它能够显著提高应用程序处理数据库请求的性能。在众多数据库连接池中,Proxool因其稳定性与高效性而备受青睐。Proxool是...
总结来说,Java通过多种方式实现了搜索功能,从简单的集合搜索到复杂的全文搜索引擎如Lucene、Elasticsearch和Solr。开发者可以根据项目需求选择合适的工具和技术,结合优化策略,实现高效、用户友好的搜索功能。
其中,Apache Lucene和Stanford NLP是两个常用的自然语言处理库,它们包含了一系列预处理和分析功能,如分词、词性标注、停用词移除等,这些都是提取关键字的基础步骤。 1. **Apache Lucene**: 这是一个全文检索库...
- **Lucene优化**:针对Lucene全文检索进行了优化,提供了一个专门的查询分析器IKQueryParser,采用歧义分析算法来优化查询关键字的搜索排列组合,显著提高了Lucene检索的命中率。 ##### 1.3 分词效果示例 以下是...
**Lucene简介**:Lucene 是 Apache 基金会下的一个开源全文搜索引擎库,它允许开发者根据关键字搜索文档内容,但只能在一个网站内部进行搜索。 **Lucene机制**: 1. **创建索引库**:指定索引库的位置。 2. **创建 ...
随着互联网技术的不断进步,搜索引擎也从最初的简单关键字搜索,发展到了如今复杂的算法和先进的技术。搜索引擎的核心技术包括网络爬虫、索引数据库、查询处理以及排序算法。网络爬虫负责从互联网上抓取页面,索引...
如果系统采用了全文搜索,可能涉及到Lucene或者Solr这样的搜索引擎技术,对唐诗内容进行索引,提高查询效率。而分页功能则涉及到数据库的分页查询,通常使用LIMIT和OFFSET关键字来实现,确保用户可以逐页查看检索...
Java提供了丰富的String类方法,如`indexOf()`、`startsWith()`、`endsWith()`、`contains()`等,用于在文本中查找关键字。同时,正则表达式(Pattern和Matcher类)提供更复杂的模式匹配能力。 2. **集合操作**:在...
Elasticsearch的设计理念强调简单性、可扩展性和高效性,并采用了倒排索引技术,以支持高性能的全文搜索和关键字搜索。 #### 二、实时搜索能力 Elasticsearch使用近实时(NRT)搜索引擎技术,这意味着在数据写入后...
NetBeans是一款流行的开源集成开发环境(IDE),它支持多种编程语言,包括Java,这使得在NetBeans中实现关键词分析程序变得相对简单。 首先,我们需要理解关键词分析的基本原理。关键词分析通常涉及以下步骤: 1. ...
- **LRU缓存策略**:了解最常用的缓存淘汰策略之一。 #### 七、JSP代码集 除了使用OpenCMS提供的标签之外,还可以使用JSP技术增强页面功能。 - **如何处理页面错误**:捕获和处理异常情况。 - **JSP页面的重定向*...
- **多线程**:学习并发控制机制,如synchronized关键字、volatile变量等。 - **反射机制**:利用Class对象访问和操作类的信息及功能。 - **事件处理模型**:学会监听器模式,处理用户界面事件。 - **非阻塞I/O**:...