1、多域搜索
MultiFieldQueryParser提供了3个静态方法
1)在不同的Field进行不同的查找
public static Query parse(String[] queries,String[] fields,Analyzer analyzer) throws ParseException
2)在不同的Field上进行同一查找,指定它们之间的布尔关系
public static Query parse(String query,String[] fields,BooleanClause.Occur[] flags,Analyzer analyzer) throws ParseException
3) 在不同的Field上进行不同的查找,指定它们之间的布尔关系
public static Query parse(String[] queries,String[] fields,BooleanClause.Occur[] flags,Analyzer analyzer) throws ParseException
2、多个索引搜索MultiSearcher
1)提供了从不同的索引中进行查找的功能,可以从不同的索引中取得结果,并将它们按某种方式排序后,返回给用户。利用一个for循环将所有的IndexSearcher对象取出,然后顺序循环搜索并得到结果,最后将结果合并返回用户。
2)
IndexSearcher searcher1=new IndexSearcher(INDEX_STORES_PATH1);
IndexSearcher searcher2=new IndexSearcher(INDEX_STORES_PATH2);
IndexSearcher[] searchers={searcher1,searcher2};
MultiSearcher searcher=new MultiSearcher(searchers);
Hits hits=searcher.searcher(q);
3、多线程搜索ParalellSearcher
一旦索引的请求发出,所以索引可以在同一时刻被检索,也就是被多个线程检索。
IndexSearcher[] searchers=new IndexSearcher[INDEX_DIR_NUMBER];
for (int i=0;i<INEX_DIR_NUMBER:i++){
Searchers[i]=new IndexSearcher(INDEX_STORE_PATH_BASE+i);
}
Term t=new Term("bookname","钢");
TermQuery q=new TermQuery(t);
MultiSearcher msearcher=new MultiSearcher(searchers);
Hits hits=msearcher.search(q);
4、Searchable和RMI
IndexSearcher实现了一个Searchable接口。Searchable接口继承自Java.rmi.Remote接口,只要有一个实现类,就可以实现远程RMI方式查找了。这个实现类是RemoteSearchable。索引引擎服务器通过RMI,获取到远程RemoteSearchable对象的接口,也就是Searchable接口,将它们做成数组,传入MultiSearcher或ParalellSearcher的构造函数中,再调用它们的search(Query)方法进行查找
分享到:
相关推荐
1. 模型与数据结构:Lucene的核心库主要包含以下组件:索引(Index)、文档(Document)、字段(Field)和分词器(Tokenizer)。索引是Lucene处理数据的主要方式,它将文本数据转化为便于搜索的结构。文档是信息的...
开发者可以通过Document类来构建文档,添加字段(Field)并设置相应的属性,如是否存储、是否索引、是否可搜索等。 2. 分析器(Analyzer):分析器负责将输入的文本进行预处理,如分词、去除停用词等。Lucene提供了...
在3.0.2版本中,Lucene引入了诸多优化,比如更高效的内存管理、更快的搜索速度以及更灵活的索引构建机制。其中,Document类是表示单个文档的基础单元,Field类则用于定义文档中的字段,如标题、内容等。Analyzer是...
首先,Lucene的核心概念包括文档(Document)、字段(Field)、索引(Index)和查询(Query)。一个文档可以包含多个字段,如标题、内容等,每个字段都可以被索引以便搜索。索引是Lucene的核心,它将文本数据转换...
总之,Lucene-5.2.1是一个强大而灵活的全文检索框架,不仅适用于大型网站的搜索功能,也可以用于企业内部信息检索、文档管理系统等多个领域。通过学习和实践这些经典实例,开发者能够掌握如何利用Lucene构建高效的...
《深入理解Lucene 4.4.0代码库与Java核心技术》 在IT领域,Lucene是一个非常重要的开源全文搜索引擎库,它为开发者提供了强大的文本分析、索引和搜索功能。这里我们关注的是Lucene的4.4.0版本,通过解压"lucene-...
3. **Lucene的版本历史**: 从2.0.0到最新的版本,Lucene经历了多次迭代和优化,增加了对更多语言的支持,提升了性能,增强了稳定性,并引入了许多新的特性,如更复杂的查询语法、多线程索引等。 4. **使用场景**: ...
- **Document和Field**:在Lucene中,信息以Document对象的形式存储,每个Document包含一个或多个Field,每个Field都有自己的名字和内容,可以设置不同的属性(如是否被索引、是否被存储等)。 - **Highlighter**:...
7. **高级功能**:Lucene还包括多线程支持、近实时搜索、自定义排序、过滤器(`Filter`)和拦截器(`Collector`)等高级特性,允许开发者进行更复杂的检索策略设计。 8. **扩展性**:Lucene本身只是一个库,开发者...
总之,Lucene 1.4.3是一个功能强大且灵活的全文搜索引擎库,它提供了从文本分析到索引构建,再到高效搜索的一整套解决方案。无论是新手还是经验丰富的开发者,都能从中找到满足需求的功能和学习的机会。通过深入研究...
Lucene的工作流程主要包括索引创建、索引读取和搜索三个阶段: - 创建索引:使用Analyzer处理文档,生成Token流,然后通过IndexWriter写入索引。 - 读取索引:使用IndexReader打开已有的索引文件。 - 搜索:Searcher...
- **文档(Document)**:表示要被索引的信息,可以包含多个字段(Field),如标题、内容、作者等。 - **段(Segment)**:索引的基本单位,存储一组文档的索引信息。 - **倒排索引(Inverted Index)**:每个词...
5. **搜索(Search)**:用户提交查询后,Lucene会使用查询解析器解析输入,生成查询对象,然后与索引进行匹配,返回最相关的文档。 6. **评分(Scoring)**:Lucene会根据多个因素(如词频、文档频率等)对匹配的...
2. ** 示例模块(examples)**:提供了简单的示例程序,展示如何使用Lucene进行索引和搜索。 3. **测试模块(test)**:丰富的单元测试代码,帮助验证功能的正确性。 4. **贡献模块(contrib)**:包含社区贡献的...
- **Document**:表示要索引的数据对象,可以包含多个Field,每个Field有其特定的名称和内容。 - **IndexWriter**:用于创建和更新索引,你可以通过它来添加、删除和修改Documents。 - **Searcher**:负责查询...
- **Document**:Document是存储信息的基本单元,可以包含多个Field,每个Field都有其特定的属性,如是否可搜索、是否可存储等。 - **IndexWriter**:用于创建和更新索引,它管理索引的生命周期,包括添加、删除和...
- **网站搜索**:很多网站使用Lucene作为其内部搜索的后端,提供快速准确的站内搜索服务。 - **信息检索系统**:企业级的文档管理系统、知识库系统等都可以利用Lucene进行全文检索。 - **日志分析**:通过对...
- 字段(Field):文档中的一个属性,可以设置为可搜索、可索引或只读。 - 索引(Index):经过分析和转换后的文档集合,用于快速查找匹配的文档。 - 分析器(Analyzer):负责将输入文本拆分成可搜索的术语,...
《深入理解Lucene 4.7.0:Java全文索引与高亮显示技术》 Lucene是一个由Apache软件基金会开发的开源全文检索库,它为Java开发者提供了强大的文本搜索功能。在4.7.0这个版本中,Lucene不仅强化了其核心搜索功能,还...
1. 多字段搜索:Lucene支持多字段检索,允许用户指定多个字段进行匹配,提高查询的灵活性。 2. 断词查询(Wildcard Query):允许用户使用通配符进行部分匹配,如“*programming”。 3. 路径查询(Path Query):...