该类可以根据用户的输入来进行解析,自动构建合适的QUERY。
代码:
public static void main(String[] args) {
try {
String field = "bookname";
String queryStr = "钢 铁";
QueryParser parser = new QueryParser(field, new StandardAnalyzer());
IndexSearcher search = new IndexSearcher("d://demo");
parser.setDefaultOperator(QueryParser.AND_OPERATOR);
Query q = parser.parse(queryStr);
Hits hits = search.search(q);
System.out.println(q.toString());
for(int i=0;i<hits.length();i++)
{
System.out.println(hits.doc(i));
}
} catch (Exception e) {
e.printStackTrace();
}
}
打印结果:
+bookname:钢 +bookname:铁
Document<stored/uncompressed,indexed,tokenized<bookname:钢铁是怎样炼成的>>
我们可以通过Query.toString()方法来查看QUERY是通过什么方式来进行查询的。
当用户连续输入几个关键字的时候,实际是希望以种与的操作。我们可以通过设置:
parser.setDefaultOperator(QueryParser.AND_OPERATOR);
来达到该目的。
在每个子查询中多了一个“+”,表示BooleanQuery中的与的关系。
我们也可以不改变该值,而是通过在查询中自己定义查询的内容,比如:
钢 AND 铁:
+bookname:钢 +bookname:铁
Document<stored/uncompressed,indexed,tokenized<bookname:钢铁是怎样炼成的>>
钢 OR 铁:
bookname:钢 bookname:铁
Document<stored/uncompressed,indexed,tokenized<bookname:钢铁是怎样炼成的>>
Document<stored/uncompressed,indexed,tokenized<bookname:钢的世界>>
钢 - 铁:只包含钢不含铁
bookname:钢 -bookname:铁
Document<stored/uncompressed,indexed,tokenized<bookname:钢的世界>>
对于一个词组来说,要想让该类不对其进行分词,可以将其完成的作为一个词条,需要在词组外面加上引号。
比如:String queryStr = "\"钢 铁\"";
bookname:"钢 铁"
查询的字符串在最外面加上了引号。
但是对于短语查询,可以设置坡度,那么在该类的查询的时候怎么设置呢,可以通过在要查询的短语后面加“~1”
比如:
String queryStr = "\"钢 铁\" ~1";
表示在钢和铁的中间可以加上一个无关的字。打印:
bookname:"钢 铁"~1
Document<stored/uncompressed,indexed,tokenized<bookname:钢铁是怎样炼成的>>
Document<stored/uncompressed,indexed,tokenized<bookname:钢和铁世界>>
模糊查询:
可以在所查短语的后面加“~0.2”来构建以个模糊查询。
String queryStr = "钢 铁 ~0.2";
打印:
bookname:钢 bookname:铁
Document<stored/uncompressed,indexed,tokenized<bookname:钢和铁世界>>
Document<stored/uncompressed,indexed,tokenized<bookname:钢铁是怎样炼成的>>
查找指定的FIELD
String str = "Rome publishdate:2006-09-01";
QueryParser parser = new QueryParser("bookname", new StandardAnalyzer());
IndexSearcher search = new IndexSearcher("d://demo");
//parser.setDefaultOperator(QueryParser.AND_OPERATOR);
Query q = parser.parse(queryStr);
Hits hits = search.search(q);
System.out.println(q.toString());
可以看到在搜做的字符串内用了一个“:”,就可以为关键字指定检索的field.
由于BOOKNAME为默认的FIELD,因此ROME关键字被指定在了BOOKNAME上,在建立检索关键字符串的时候使用了
“publishdate:2006-09-01”,这种方式来指定查找的FIELD
进行范围搜索的时候,可以吧查询条件设置为:
String str = "[1 TO 100]";
分享到:
相关推荐
赠送jar包:lucene-queryparser-7.3.1.jar; 赠送原API文档:lucene-queryparser-7.3.1-javadoc.jar; 赠送源代码:lucene-queryparser-7.3.1-sources.jar; 赠送Maven依赖信息文件:lucene-queryparser-7.3.1.pom;...
赠送jar包:lucene-queryparser-6.6.0.jar; 赠送原API文档:lucene-queryparser-6.6.0-javadoc.jar; 赠送源代码:lucene-queryparser-6.6.0-sources.jar; 赠送Maven依赖信息文件:lucene-queryparser-6.6.0.pom;...
赠送jar包:lucene-queryparser-7.3.1.jar; 赠送原API文档:lucene-queryparser-7.3.1-javadoc.jar; 赠送源代码:lucene-queryparser-7.3.1-sources.jar; 赠送Maven依赖信息文件:lucene-queryparser-7.3.1.pom;...
赠送jar包:lucene-queryparser-7.7.0.jar; 赠送原API文档:lucene-queryparser-7.7.0-javadoc.jar; 赠送源代码:lucene-queryparser-7.7.0-sources.jar; 赠送Maven依赖信息文件:lucene-queryparser-7.7.0.pom;...
赠送jar包:lucene-queryparser-7.2.1.jar; 赠送原API文档:lucene-queryparser-7.2.1-javadoc.jar; 赠送源代码:lucene-queryparser-7.2.1-sources.jar; 赠送Maven依赖信息文件:lucene-queryparser-7.2.1.pom;...
lucene-queryparser-4.9.0.jar
赠送jar包:lucene-queryparser-6.6.0.jar; 赠送原API文档:lucene-queryparser-6.6.0-javadoc.jar; 赠送源代码:lucene-queryparser-6.6.0-sources.jar; 赠送Maven依赖信息文件:lucene-queryparser-6.6.0.pom;...
赠送jar包:lucene-queryparser-7.7.0.jar; 赠送原API文档:lucene-queryparser-7.7.0-javadoc.jar; 赠送源代码:lucene-queryparser-7.7.0-sources.jar; 赠送Maven依赖信息文件:lucene-queryparser-7.7.0.pom;...
赠送jar包:lucene-queryparser-7.2.1.jar; 赠送原API文档:lucene-queryparser-7.2.1-javadoc.jar; 赠送源代码:lucene-queryparser-7.2.1-sources.jar; 赠送Maven依赖信息文件:lucene-queryparser-7.2.1.pom;...
java运行依赖jar包
总的来说,QueryParser.jj是Lucene查询解析过程中的基石,它通过JavaCC生成的代码将用户的自然语言查询转换为搜索引擎能够理解的查询结构,从而实现高效的信息检索。掌握QueryParser.jj的内涵,有助于开发者更深入地...
lucene-queryparser-4.4.0.jar Lucene核心架包之一
lucene-queryparser-8.8.2.jar
IKAnalyzer2012FF_u1.jar; lucene-analyzers-common-4.2.0.jar; lucene-analyzers-kuromoji-4.2.0.jar;...lucene-queryparser-4.2.0.jar; lucene-spatial-4.2.0.jar; lucene-suggest-4.2.0.jar;
官方离线安装包,测试可用。使用rpm -ivh [rpm完整包名] 进行安装
官方离线安装包,测试可用。使用rpm -ivh [rpm完整包名] 进行安装
官方离线安装包,测试可用。使用rpm -ivh [rpm完整包名] 进行安装
- **QueryParser模块**:实现了查询解析功能,如`lucene-queryparser-4.7.0.jar`。 - **Memory模块**:提供了内存中的索引支持,适用于小型应用或测试,如`lucene-memory-4.7.0.jar`。 - **Miscellaneous模块**:...
java运行依赖jar包
在IT领域,Lucene是一个广泛使用的全文搜索引擎库,它提供了高效、可扩展的搜索功能。在本主题中,我们将深入探讨如何在Lucene中实现前缀搜索,这是一种允许用户通过输入一个词的前缀来查找匹配文档的强大工具。这...