lucene之Query
来源:互联网 发布:介绍云计算的ppt 编辑:程序博客网 时间:2024/05/19 02:41
lucene之Query
package cn.zqh.lucene.query;
import java.io.IOException;
import java.util.Date;
import org.apache.lucene.document.DateTools;
import org.apache.lucene.document.Document;
import org.apache.lucene.document.NumberTools;
import org.apache.lucene.document.DateTools.Resolution;
import org.apache.lucene.index.Term;
import org.apache.lucene.queryParser.ParseException;
import org.apache.lucene.search.BooleanQuery;
import org.apache.lucene.search.PhraseQuery;
import org.apache.lucene.search.Query;
import org.apache.lucene.search.RangeQuery;
import org.apache.lucene.search.TermQuery;
import org.apache.lucene.search.BooleanClause.Occur;
import org.junit.Test;
import cn.zqh.lucene.highlight.IndexDao;
import cn.zqh.lucene.highlight.QueryResult;
import cn.zqh.lucene.utils.File2DocumentUtils;
/**
zqh
*对象查询
*/
public class QueryTest {
IndexDao indexDao = new IndexDao();
/**
* 打印结果
*/
public void queryAddPrintResult(Query query) throws ParseException, IOException{
System.out.println("对应字符串的查询语法:"+query);
QueryResult qr =indexDao.search(query, 0, 100);
System.out.println("总共有【"+qr.getRecordCount()+"】条匹配的记录");
for(Document doc : qr.getRecordList()){
File2DocumentUtils.printDocumentInfo(doc);
}
}
/**
* 关键词查询
* 语法:name:连接池
*/
@Test
public void testTermQuery() throws ParseException, IOException{
//英文关键字全是小写字符
Term term = new Term("name","连接池"); //某个属性中的关键字
Query query = new TermQuery(term);
queryAddPrintResult(query);
}
/**
* 范围搜索
* 1.文件大小
* 2.日期
* 语法:size:[000000000000le TO 000000000000rs]
* 不包含边界size:{000000000000le TO 000000000000rs}
*/
@Test
public void testRangeQuery() throws ParseException, IOException{
//根据文件大小搜索
Term lowerTerm = new Term("size",NumberTools.longToString(200));
Term upperTerm = new Term("size",NumberTools.longToString(500));
//如果是想搜索200字节到1000字节大小的文件,ye这样写
// Term lowerTerm = new Term("size","0200");
// Term upperTerm = new Term("size","1000");
Query query = new RangeQuery(lowerTerm,upperTerm,true);
queryAddPrintResult(query);
}
public static void main(String[] args){
System.out.println(NumberTools.longToString(1000)); //结果:000000000000rs rs表示26个英文字母
System.out.println(DateTools.dateToString(new Date(),Resolution.DAY));//日期格式
}
/**
* 通配符查询
* ?代表一个字符,* 代表0或者多个字符
* 语法:name:连接?
*/
public void testWildcardQuery() throws ParseException, IOException{
Term term = new Term("name","链接?");
Query query = new TermQuery(term);
queryAddPrintResult(query);
}
/**
* 短语查询 如要查:lucene入门教程
* name:
*
*/
public void testPhraseQuery() throws ParseException, IOException{
PhraseQuery phraseQuery = new PhraseQuery();
//方法1:指定位置
phraseQuery.add(new Term("name","lucene"),1); //lucene和教程之间差一个一个词 万一我不知道之间差多少怎么办?设置范围
phraseQuery.add(new Term("name","教程"),3);
//方法2
phraseQuery.add(new Term("name","lucene"));
phraseQuery.add(new Term("name","教程"));
phraseQuery.setSlop(5); //表示两词之间相差5个词内
queryAddPrintResult(phraseQuery);
}
/**
* boolean查询
*
*/
public void testBooleanQuery() throws ParseException, IOException{
//条件1
PhraseQuery query1 = new PhraseQuery();
query1.add(new Term("name","lucene"));
query1.add(new Term("name","教程"));
query1.setSlop(5);
//条件2
Term lowerTerm = new Term("size",NumberTools.longToString(200));
Term upperTerm = new Term("size",NumberTools.longToString(500));
Query query2 = new RangeQuery(lowerTerm,upperTerm,true);
//组合
BooleanQuery boolQuery = new BooleanQuery();
boolQuery.add(query1, Occur.MUST); //表示条件1必须出现
boolQuery.add(query2, Occur.MUST); //表示条件2必须出现
queryAddPrintResult(boolQuery);
}
}
- lucene之Query
- Lucene--Query
- 【lucene】 Query
- lucene query
- 7、学习lucene之其他搜索的条件Query
- lucene -- 4 各种Query
- Lucene query使用总结
- Lucene的各种query
- Lucene 4 Query
- Lucene Query Parser Syntax
- Lucene 学习 Query
- Lucene介绍:Query
- 构建各种Lucene Query
- Lucene各种Query
- Lucene 查询(Query)子类
- Lucene 查询(Query)子类
- lucene query语法详解
- lucene Query搜索
- 256色工具栏使用截图
- Magento admin system config 写好后注意事项
- 下载:郑文强的测试课件PPT与视频资料
- 回答网友一个wince 的编译错误问题
- LINUX学习之路----shell编程
- lucene之Query
- 游戏编程资料共享
- 嵌入式LCD12232点阵研究
- cocos2d-x for android --环境配置( HelloWorld)
- 测试管理016:测试执行进度有效监控的5个维度
- sqlserver 2008 express版本的安装
- Linux中C语言open函数打开或创建文件详细讲解
- 【转】在GDI+使用区域
- 如何使用MATLAB进行USB2.0摄像头的编程 .