RangeQuery的rewrite方法
来源:互联网 发布:门窗算料优化软件 编辑:程序博客网 时间:2024/06/04 00:54
package query;
import org.apache.lucene.index.IndexReader;
import org.apache.lucene.index.Term;
import org.apache.lucene.index.TermEnum;
import org.apache.lucene.search.BooleanClause;
import org.apache.lucene.search.Query;
import org.apache.lucene.search.TermQuery;
public class Range {
public static void main(String[] args) {
// TODO 自动生成的方法存根
public Query rewrite(IndexReader reader) throws IOException{
//布尔型Query, 用来保存查询重写后的结果
BooleanQuery query = new BooleanQuery(true);
//查找出所有索引中按字典序法在lowerTerm之后的Term
TermEnum enumerator = reader.terms(lowerTerm);
try{
//是 “开区间”还是“闭区间”
boolean checkLower = flase;
if(!inclusive)
checkLower = true;
String testField = getField();
//循环遍历所有的词条
do{
Term term = enumerator.term();
if(term != null && term.field() == testField)
{
//进行比较
if(!checkLower || term.text().compareTo(lowerTerm.text()) > 0)
{
checkLower = false;
if(upperTerm != null)
{
//当小于上界时才考虑,否则就结束循环
int compare = upperTerm.test().compareTo(term.text());
if((compare < 0)||(!inclusive && compare == 0))
break;
}
//把所有匹配的词条组成TermQuery
TermQuery tq = new TermQuery(term);
tq.setBoost(getBoost());
//加入布尔查询
query.add(tq, BooleanClause.Occur.SHOULD);//add to query
}
}
else
{
break;
}
}
while(enumerator.next());
}
finally{
enumerator.close();
}
return query;
}
}
}
import org.apache.lucene.index.IndexReader;
import org.apache.lucene.index.Term;
import org.apache.lucene.index.TermEnum;
import org.apache.lucene.search.BooleanClause;
import org.apache.lucene.search.Query;
import org.apache.lucene.search.TermQuery;
public class Range {
public static void main(String[] args) {
// TODO 自动生成的方法存根
public Query rewrite(IndexReader reader) throws IOException{
//布尔型Query, 用来保存查询重写后的结果
BooleanQuery query = new BooleanQuery(true);
//查找出所有索引中按字典序法在lowerTerm之后的Term
TermEnum enumerator = reader.terms(lowerTerm);
try{
//是 “开区间”还是“闭区间”
boolean checkLower = flase;
if(!inclusive)
checkLower = true;
String testField = getField();
//循环遍历所有的词条
do{
Term term = enumerator.term();
if(term != null && term.field() == testField)
{
//进行比较
if(!checkLower || term.text().compareTo(lowerTerm.text()) > 0)
{
checkLower = false;
if(upperTerm != null)
{
//当小于上界时才考虑,否则就结束循环
int compare = upperTerm.test().compareTo(term.text());
if((compare < 0)||(!inclusive && compare == 0))
break;
}
//把所有匹配的词条组成TermQuery
TermQuery tq = new TermQuery(term);
tq.setBoost(getBoost());
//加入布尔查询
query.add(tq, BooleanClause.Occur.SHOULD);//add to query
}
}
else
{
break;
}
}
while(enumerator.next());
}
finally{
enumerator.close();
}
return query;
}
}
}
0 0
- RangeQuery的rewrite方法
- lucene精解-BooleanQuery、RangeQuery及rewrite
- Lecene中 ConstantScoreRangeQuery 与 RangeQuery 的区别
- URL Rewrite的设置方法
- Magento Rewrite Url的方法
- Rewrite – Apache转Lighttpd的伪静态rewrite方法
- 开启apache rewrite模块的方法
- 调试Apache的rewrite规则方法
- nginx rewrite方法
- rewrite方法-1
- rewrite方法--2
- phpbb的假静态化方法 Apache Rewrite 技術
- IIS下伪静态html(URL Rewrite)的设置方法
- UCenter Home 在IIS服务器下,开启Rewrite的方法
- Apache下伪静态html(URL Rewrite)的设置方法
- 为什么magento的rewrite方法对抽象类无效
- destoon的URL Rewrite(伪静态)设置方法【完整步骤】
- discuz论坛Apache Rewrite实现URL重写的配置方法
- C++11 std::function用法
- Android requires compiler compliance level 5.0 or 6.0. Found '1.7' instead. Please use Android Tool
- java Class类文件结构
- crontab设置定时任务
- 少年愁----三毛
- RangeQuery的rewrite方法
- android距离传感器的应用
- Jquery节点获取
- Dom4j读写xml文件
- centos 6.5 配置ss5
- 轮盘赌选择解决思路
- Cocos2d-X 学习园地
- (顺序存储)比较两个字符串A和B大小
- Tutorial on using downloaded WPA_PSK rainbow tables with airolib