Lucene5(5)搜索api
来源:互联网 发布:淘宝退换货流程表 编辑:程序博客网 时间:2024/03/28 19:49
1、使用QueryParser搜索
QueryParser queryParser = new QueryParser("context",getAnalyzer());Query query = null;query = queryParser.parse("Identified");// 完整匹配分词查询/** * 通配符 ?,*的使用 */// 使用?匹配单个字符查询//query = queryParser.parse("Identi?ied");// 使用*匹配多个字符查询//query = queryParser.parse("L*r");/** * 布尔运算AND, OR,NOT,+,-的使用,注意:一定要是大写的AND和OR,NOT */// 使用OR联合多关键字查询,也可用空格代替OR//query = queryParser.parse("Licensor OR ce*");// 这个和使用OR一样的效果//query = queryParser.parse(" Licensor ce*");// +代表必须的条件,搜索文档必须包含Licensor 可能有Wildcard//query = queryParser.parse("+Licensor Wildcard");// 使用AND取多个关键字的并集查询//query = queryParser.parse("Licensor AND ce* AND Licenso?");// 搜索Lincensor Apache而不是Apache Licensor//query = queryParser .parse("'Lincensor Apache' NOT 'Apache Licensor'");// "-"同NOT的效果一样//query = queryParser .parse("'Lincensor Apache' - 'Apache Licensor'");/** * 使用正则表达式查询 */// 这个匹配Lincensor,aicensor,bicensor分词//query = queryParser.parse("/[Lab]icensor/");// 根据需要可以更灵活的使用//query = queryParser.parse("/[Lab]icenso[a-z]/");/** * 使用~模糊匹配查询 这个要和*号的用法区分下,*号完整通配多个字符查询,而~不是简单的通配,这个模糊匹配和Lucene的评分有关 */// 可以查到Licensor关键字,而queryParser.parse("icensor*")查不到//query = queryParser.parse("icensor~");// ~后面可加0-2的整数来制定模糊匹配度,默认不加为1//query = queryParser.parse("Licens~1");// ~还可以模糊匹配差异化N字符数的多个关键字//query = queryParser.parse("Licens cens ~0");/** * 范围查询,多用于数字和时间的查询 */// {}abc与Licenszhi间的文件,不包含//query = queryParser.parse("{abc TO Licens}");// {}abc与Licenszhi间的文件,包含本身//query = queryParser.parse("[abc TO Licens]");/** * 关键字加权处理查询 */// 默认为1,可加权可降权,可通过加权处理给匹配的结果排序//query = queryParser.parse("Licensor Wildcard^4 ");// 可使用()组合多个条件查询//query = queryParser .parse("(+Licensor +Wildcard) AND easier");// ps: 查询部分字符需要转义处理,如(+ - && || ! ( ) { } [ ] ^ " ~ * ? : \ /)
2、使用Query继承类搜索
QueryParser queryParser = new QueryParser("context",getAnalyzer());Query query = null;// 搜索特定的项//query = new TermQuery(new Term(field,value));//TermRangeQuery 搜索特定范围的项.这个 Query 不适用于数字范围查询,数字范围查询请使用 NumericRangeQuery 代替//query = new TermRangeQuery(field,new BytesRef(start.getBytes()),new BytesRef(end.getBytes()),true,true);//NumericRangeQuery 搜索数字范围的项//query = NumericRangeQuery.newIntRange(field,start,end,true,true);//PrefixQuery 前缀匹配搜索//query = new PrefixQuery(new Term(field,value));//WildcardQuery 通配符搜索//query = new WildcardQuery(new Term(field,value));//FuzzyQuery 模糊匹配搜索.搜索的关键字即使有错,在一定范围内都可以被搜索到//query = new FuzzyQuery(new Term(field,value),maxEdits,prefixLength);//BooleanQuery 多个条件的查询//BooleanQuery.Builder booleanQueryBuilder = new BooleanQuery.Builder();//Query query1 = new TermQuery(new Term("",""));//Query query2 = new TermQuery(new Term("",""));//booleanQueryBuilder.add(query1,BooleanClause.Occur.MUST);//booleanQueryBuilder.add(query2,BooleanClause.Occur.MUST);//query = booleanQueryBuilder.build();//PhraseQuery 短语查询//PhraseQuery.Builder phraseQueryBuilder = new PhraseQuery.Builder();//phraseQueryBuilder.setSlop(1); // 两个短语间最大的单词间隔//phraseQueryBuilder.add(new Term(field,value1));//phraseQueryBuilder.add(new Term(field,value2));//query = phraseQueryBuilder.build();
阅读全文
0 0
- Lucene5(5)搜索api
- Lucene5.5对索引进行搜索
- lucene5.5创建索引
- Lucene5.0索引的创建与搜索
- 基于Lucene5.4的本地文件搜索系统
- lucene5--增量索引(Zoie)(近实时搜索的实现)
- Lucene5(4)修改指定索引的搜索权重
- 5 搜索api
- lucene5.5创建索引和检索
- Lucene5 学习笔记(3) —— 重用 IndexReader 和常用的搜索方法
- lucene全文搜索之一:lucene的主要功能和基本结构(基于lucene5.5.3)
- Lucene5 学习笔记(3) —— 重用 IndexReader 和常用的搜索方法
- lucene5.5 自定义分词器跟过滤器需要注意的
- Lucene5 学习笔记(2) —— 简单介绍 Lucene 搜索功能和索引的修改、删除
- lucene全文搜索之二:创建索引器(创建IKAnalyzer分词器和索引目录管理)基于lucene5.5.3
- lucene全文搜索之三:生成索引字段,创建索引文档(给索引字段加权)基于lucene5.5.3
- API搜索服务
- 讽刺&Google搜索API
- python爬贴吧图片下载到本地
- 在ubuntu 14.04系统中安装cuda-7.5时编译samples文件,出现cannot find lnvcuvid 错误
- scala Option理解
- xshell5下载和安装教程
- 10.7 T1
- Lucene5(5)搜索api
- Spark入门——SparkContext启动详解
- 13、C#里面do...while循环结构的使用
- JAVA多线程之interrupt、interrupted、isInterrupted
- BZOJ[5055]膜法师 树状数组
- 【AC梦工厂】广工华工联合训练1 A
- 用编程解决过河问题
- Vue2.0 --- vue-cli脚手架中全局引入JQ
- gcc命令