测试Query类型
import java.io.File; import org.apache.lucene.document.Document; import org.apache.lucene.index.DirectoryReader; import org.apache.lucene.index.IndexReader; import org.apache.lucene.index.Term; import org.apache.lucene.search.BooleanQuery; import org.apache.lucene.search.IndexSearcher; import org.apache.lucene.search.PhraseQuery; import org.apache.lucene.search.PrefixQuery; import org.apache.lucene.search.Query; import org.apache.lucene.search.ScoreDoc; import org.apache.lucene.search.TermQuery; import org.apache.lucene.search.TermRangeQuery; import org.apache.lucene.search.TopDocs; import org.apache.lucene.search.BooleanClause.Occur; import org.apache.lucene.search.WildcardQuery; import org.apache.lucene.store.FSDirectory; import org.junit.Test; import com.test.utils.File2DocumentUtil; public class QueryTest { String filePath = "F:\\eclipse\\LuceneTest\\luceneDatasource\\IndexWriter addDocument's a javadoc .txt"; String indexPath = "F:\\eclipse\\LuceneTest\\luceneIndex"; /** * 按词条搜索—TermQuery * * @throws Exception */ @Test public void testTermQuery() throws Exception { Term term = new Term("content", "document"); Query query = new TermQuery(term); queryAndPrintResult(query); } /** * 范围检索 看不懂 * * @throws Exception */ @Test public void testRangeQuery() throws Exception { Term lowerTerm = new Term("size", "0"); Term upperTerm = new Term("size", "4000"); // Query query = new TermRangeQuery("size", lowerTerm.bytes(), // upperTerm.bytes(), true, false); Query query = TermRangeQuery.newStringRange("size", "000", "500", true, true); queryAndPrintResult(query); } // 使用前缀搜索—PrefixQuery @Test public void testPrefixQuery() throws Exception { Term term = new Term("content", "房"); PrefixQuery query = new PrefixQuery(term); queryAndPrintResult(query); } /* * 通配符查询 * '?'代表一个字符。'*'代表0个或多个字符 */ @Test public void testWildCardQuery() throws Exception { Term term = new Term("content", "*间"); WildcardQuery query = new WildcardQuery(term); queryAndPrintResult(query); } // 短语搜索—PhraseQuery @Test public void testPhraseQuery() throws Exception { PhraseQuery query = new PhraseQuery(); //设定position位置 // query.add(new Term("content", "旅游"), 0); // query.add(new Term("content", "的"), 2); query.add(new Term("content", "旅游")); query.add(new Term("content", "的")); //指定多个未知短语 query.setSlop(1); queryAndPrintResult(query); } /** * 按“与或”搜索—BooleanQuery 1.和: MUST与MUST_NOT * * 2.或: SHOULD与SHOULD * * 3.A与B的并集-B MUST与MUST_NOT * * @throws Exception */ @Test public void testBooleanQuery() throws Exception { PhraseQuery query = new PhraseQuery(); query.add(new Term("content", "adds")); query.add(new Term("content", "room")); query.setSlop(2); Term term = new Term("content", "add1"); PrefixQuery query2 = new PrefixQuery(term); BooleanQuery booleanQuery = new BooleanQuery(); booleanQuery.add(query, Occur.SHOULD); booleanQuery.add(query2, Occur.SHOULD); queryAndPrintResult(booleanQuery); } public void queryAndPrintResult(Query query) throws Exception { System.out.println("对应的查询字符串:" + query); IndexReader reader = DirectoryReader.open(FSDirectory.open(new File(indexPath))); IndexSearcher indexSearcher = new IndexSearcher(reader); TopDocs topDocs = indexSearcher.search(query, 10000); System.out.println("总共有【" + topDocs.totalHits + "】条匹配结果"); for (ScoreDoc scoreDoc : topDocs.scoreDocs) { int docSn = scoreDoc.doc; Document doc = indexSearcher.doc(docSn); File2DocumentUtil.printDocumnetInfo(doc); } } }
相关推荐
基于ICTCLAS中科院分词器实现Lucene4.9版本的中文分词功能,新增中英文停用词库,直接导入即可使用。
lucene4.9全包
最全、最新的lucene技术,包含所有的代码以及文档等内容,是学习lucene最全的文档。
NULL 博文链接:https://w62268458.iteye.com/blog/2180659
利用IKAnalyzer结合LUCENE.4.9进行中文分词的高亮显示。
免费Lucene4.9JAR文件,本来想全部上传上来的,可是太大了,所以就只传了个主要的CORE,如果谁需要可以从官网下载,URL地址:http://mirrors.cnnic.cn/apache/lucene/java/4.9.0/
public void add(Query query, BooleanClause.Occur occur) BooleanClause用于表示布尔查询子句关系的类,包括: BooleanClause.Occur.MUST,BooleanClause.Occur.MUST_NOT,BooleanClause.Occur.SHOULD。 有以下6...
Lucene3.0之查询处理(1):原理和查询类型 各种Query对象详解
NULL 博文链接:https://iamyida.iteye.com/blog/2206107
lucene实例lucene实例lucene实例lucene实例lucene实例lucene实例lucene实例lucene实例lucene实例
Lucene之删除索引 Lucene之删除索引 Lucene之删除索引 http://blog.csdn.net/nupt123456789/article/details/10666105
本文档详细讲解了各种SpanQuery的用法,以及它跟PhraseQuery的区别
npm install lucene-query-string-builder --save 特征 创建术语字符串时转义lucene特殊字符 包含所有lucene用途的运算符 简单的lucene.builder函数,用于定义lucene查询构建器 用法 让我们看看如何使用Lucene查询...
c#下实现Lucene时间区间查询匹配。主要还是对Lucene查循对像Query的实现
此博文是对近期做lucene索引的总结, (lucene,solr,netty,hadoop),如蒙加入,不胜感激,大家共同探讨,本人争取每日一博,希望大家关注呦
lucene3.0 lucene3.0 lucene3.0 lucene3.0 lucene3.0
lucene学习lucene学习lucene学习lucene学习lucene学习lucene学习lucene学习lucene学习lucene学习lucene学习lucene学习lucene学习lucene学习lucene学习lucene学习lucene学习lucene学习lucene学习lucene学习lucene学习...
lucene3.3的全部jar包ant-1.7.1.jar ant-junit-1.7.1.jar commons-beanutils-1.7.0.jar ...lucene-xml-query-parser-3.3.0.jar maven-ant-tasks-2.1.1.jar xercesImpl-2.9.1-patched-XERCESJ-1257.jar
Lucene3.0特性Lucene3.0特性
赠送jar包:lucene-core-7.7.0.jar; 赠送原API文档:lucene-core-7.7.0-javadoc.jar; 赠送源代码:lucene-core-7.7.0-sources.jar; 赠送Maven依赖信息文件:lucene-core-7.7.0.pom; 包含翻译后的API文档:lucene...