package com.meiyu.lucene;
import java.io.File;
import org.apache.lucene.document.Document;
import org.apache.lucene.index.CorruptIndexException;
import org.apache.lucene.index.IndexReader;
import org.apache.lucene.index.Term;
import org.apache.lucene.search.IndexSearcher;
import org.apache.lucene.search.Query;
import org.apache.lucene.search.ScoreDoc;
import org.apache.lucene.search.TermQuery;
import org.apache.lucene.store.FSDirectory;
public class TestQuery extends TestLucene36
{
/**
* 测试各种Query
*
* @throws Exception
* @throws CorruptIndexException
*/
private static void testQuery() throws Exception
{
/**获取IndexSearcher*/
IndexReader reader = IndexReader.open(FSDirectory.open(new File(indexPath)));
IndexSearcher searcher = new IndexSearcher(reader);
/**1.TermQuery 按词条搜索*/
Query query = new TermQuery(new Term("desc","获得"));
/**2.MultiTermQuery*/
/**3.BooleanQuery 布尔搜索*/
// BooleanQuery query = new BooleanQuery();
// Query query1 = new TermQuery(new Term("desc","获得"));
// Query query2 = new TermQuery(new Term("name","白"));
// query.add(query1, BooleanClause.Occur.SHOULD);
// query.add(query2, BooleanClause.Occur.MUST);
/**4.WildcardQuery 通配符搜索*/
// WildcardQuery query = new WildcardQuery(new Term("desc", "因为*"));//*?
/**5.PhraseQuery 多关键字的搜索*/
// PhraseQuery query = new PhraseQuery();
// query.add(new Term("desc","因为"));
// query.add(new Term("desc","巨乳"));
// query.setSlop(5);//通过setSlop()方法来设定一个称之为“坡度”的变量来确定关键字之间是否允许、允许多少个无关词汇的存在
/**6.PrefixQuery 前缀搜索*/
// PrefixQuery query = new PrefixQuery(new Term("desc","因为"));
/**7.MultiPhraseQuery */
// MultiPhraseQuery query=new MultiPhraseQuery();
// query.add(new Term[]{new Term("desc","因为"),new Term("desc","巨乳")});
/**8.FuzzyQuery 相近词语的搜索*/
// FuzzyQuery query = new FuzzyQuery(new Term("desc","巨乳"));
/**9.TermRangeQuery 范围查询(主要指文本)*/
// TermRangeQuery query = new TermRangeQuery("desc","250","300",true,true);
/**10.NumericRangeQuery 范围查询(索引字段必须是 NumbericField)*/
// NumericRangeQuery<Integer> query = NumericRangeQuery.newIntRange("birth", 1980, 1983, true, false);
/**11.SpanQuery 跨度查询*/
// SpanTermQuery query1 = new SpanTermQuery(new Term("desc", "因为"));//单独使用SpanTermQuery同TermQuery
// SpanTermQuery query2 = new SpanTermQuery(new Term("desc", "巨乳"));
// SpanNearQuery query = new SpanNearQuery(new SpanQuery[]{query1, query2}, 5, true);//数值代表跨度范围
ScoreDoc[] hits = searcher.search(query,10).scoreDocs;
for(ScoreDoc scoreDoc:hits)
{
Document doc= searcher.doc(scoreDoc.doc);
System.out.println(scoreDoc.score + "\tid:"+doc.get("id")+"\tname:"+doc.get("name")+"\tbirth:"+doc.get("birth")+"\tdesc:"+doc.get("desc"));
}
}
public static void main(String[] args) throws Exception
{
// index();
testQuery();
}
}
分享到:
相关推荐
这里的“lucene3.6.jar”是一个包含了Lucene 3.6版本核心功能的Java类库,它是实现全文检索的基础。 Lucene的核心特性包括索引构建、查询解析、搜索执行以及结果排序等。索引构建允许开发者将大量文本数据转换为...
以上就是Lucene 3.6的学习笔记,涵盖了从基础到高级的各种搜索和索引操作,以及相关的分词和扩展功能。通过学习这些内容,可以深入理解Lucene的工作机制,并利用其强大的搜索能力构建高效的应用。
《Lucene 3.6 全文检索技术详解》 Lucene是一个开源的全文检索库,由Apache软件基金会开发,广泛应用于各种搜索场景。在本文中,我们将深入探讨Lucene 3.6版本中的核心概念和技术,以帮助你更好地理解和应用这一...
Lucene 是一个开源的全文检索库,由 Apache 软件基金会开发,广泛应用于各种搜索引擎的构建。在 Lucene 3.6 版本中,它提供了强大的文本搜索功能,适用于Java开发人员。这个版本相对稳定,对于初学者来说是一个很好...
**Lucene 3.6 全文检索框架详解** Lucene 是一个开源的全文检索库,由 Apache 软件基金会开发。它提供了一个高级的、灵活的、可扩展的搜索程序开发框架,使得开发者可以轻松地在应用程序中集成全文搜索功能。在...
**Lucene 3.6 入门案例** Lucene 是一个高性能、全文本搜索库,由 Apache 软件基金会开发。它提供了完整的搜索功能,包括索引、查询、评分等,广泛应用于各种项目和产品中。在这个入门案例中,我们将深入理解如何...
《基于Lucene 3.6平台的搜索工具详解与应用指南》 Lucene是一个高性能、全文本搜索引擎库,由Apache软件基金会开发并维护。在3.6版本中,Lucene提供了一套完整的搜索解决方案,包括索引构建、查询解析、结果排序等...
在`src/java/org/apache/lucene/search`目录中,`Query`类及其子类定义了各种查询类型,如`TermQuery`、`BooleanQuery`和`WildcardQuery`。查询构造器如`QueryParser`将用户的自然语言输入转换为对应的查询对象,...
Apache Lucene是一个高性能、全文本搜索库,它为开发者提供了强大的文本搜索功能,使得在各种应用中实现复杂而高效的搜索引擎成为可能。在这个小案例中,我们将了解Lucene的基本概念,以及如何构建一个简单的全文...
《Lucene 3.6 入门实例教程》是一份专为初学者设计的指南,旨在帮助用户快速掌握Apache Lucene 3.6版本的基本概念和应用。Lucene是一个高性能、全文检索库,广泛用于构建搜索功能强大的应用程序。这份教程通过完整的...
《深入剖析Lucene 3.6源码》 Lucene是一个高性能、全文检索库,它由Apache软件基金会开发并维护,被广泛应用于各种搜索引擎的构建。Lucene 3.6.1是其历史版本之一,虽然现在有更新的版本,但3.6.1版本因其稳定性及...
《Lucene 3.6 全文搜索引擎技术详解》 Lucene是一个开源的全文检索库,由Apache软件基金会开发并维护。在3.6版本中,Lucene为开发者提供了强大的文本搜索功能,使得在网站或应用程序中实现高效、精确的全文搜索成为...
Lucene 是一个高性能、全文本搜索库,被广泛应用于各种搜索引擎的开发中。本学习资料主要聚焦于 Lucene 3.6.1 版本,这个版本在当时具有稳定性和功能性的良好平衡。我们将通过分析其源码和使用工具来深入理解 Lucene...
`FuzzyQuery`用于实现近似搜索,允许用户指定编辑距离。`WildcardQuery`和`PrefixQuery`则实现了通配符和前缀搜索。 为了提高搜索性能,Lucene引入了缓存机制。`Filter`类可以对查询结果进行过滤,如按日期范围筛选...
Apache Lucene是一个高性能、全文本搜索库,被广泛应用于各种搜索引擎的开发中。3.6.0版本是Lucene的一个重要里程碑,它提供了丰富的功能和改进,使得开发者能够更高效地构建搜索解决方案。下面我们将深入探讨Lucene...
#### 3.6 关闭资源 最后,记得关闭所有打开的资源。 ```java reader.close(); directory.close(); ``` 以上就是 Lucene 创建索引和进行全文搜索的基本流程。通过熟练掌握这些步骤,开发者可以构建出高效、灵活的...
- `hibernate-search-orm.jar`:提供了全文搜索功能,基于Lucene集成。 - `hibernate-annotations.jar`和`hibernate-validator.jar`:前者提供了ORM的注解支持,后者实现了JSR 303/349 Bean Validation规范,用于...
<query>title:测试</query> ``` #### 1.5 提交(Commit) 添加、更新或删除操作后,需执行`commit`命令,使更改生效。Solr允许配置自动提交,也可手动触发。 ### 2. 高亮显示 高亮显示是突出搜索结果中匹配...
6.8 Query Response Compression 6.9 Embedded vs HTTP Post 6.10 RAM Usage Considerations 6.10.1 OutOfMemoryErrors 6.10.2 Memory allocated to the Java VM **七、FAQ** 解答关于Solr使用过程中可能遇到的问题...
**6.8 Query Response Compression** - 开启查询响应压缩,减少网络传输时间。 **6.9 Embedded vs HTTP Post** - 比较本地嵌入式服务器与HTTP Post方式的优缺点。 **6.10 RAM Usage Considerations(内存方面的...