佳丽斯 加厚双人/单人秋冬被子暖冬 羊毛被芯羊毛柔丝被特价包邮 忧忧鱼冬外穿打底裤女秋冬厚长裤女裤加绒加厚高腰弹力铅笔裤靴裤 韩国代购2013新款 韩版秋冬休闲女时尚磨破口袋卫衣韩版学生装 潮

有时,退一步,能一口气进几步,只是这先退一步需要勇气和自信。

用心爱你,努力工作。

  BlogJava :: 首页 :: 新随笔 :: 联系 :: 聚合  :: 管理 ::
  70 随笔 :: 1 文章 :: 33 评论 :: 0 Trackbacks
    最近在开发站内搜索,以开源的lucene作為基础框架。Lucene可以实现自定义过滤器Filter接口,也可以直接调用lucene已經提供的类。
    本文使用 FilteredQuery 进行多条件过滤。

import java.util.*;
import org.apache.lucene.index.Term;
import org.apache.lucene.search.*;

public class ezfilter{   
        private List<Filter> filterList;
        public ezfilter(){
            filterList = new ArrayList<Filter>();
        }
        public void addFilter(String Field,String Value){
            Term term=new Term(Field,Value);//添加term
            QueryWrapperFilter filter=new QueryWrapperFilter(new TermQuery(term));//添加过滤器
            filterList.add(filter);//加入List,可以增加多個过滤
        }
        public Query getFilterQuery(Query query){
            for(int i=0;i<filterList.size();i++){
                //取出多個过滤器,在结果中再次定位结果
                query = new FilteredQuery(query, filterList.get(i));
            }
            return query;
        }   
}

在查询时,调用方式如下:

ezfilter filter = new ezfilter();
filter.addFilter("id","1000");//过滤id=1000
filter.addFilter("type","school");//过滤type=school
.....
query=filter.getFilterQuery(query);//结果过滤
hits = searcher.search(query);


以上代码只是简化说明,希望有碰到的朋友可以参考。





posted on 2009-10-13 17:28 王生生 阅读(1255) 评论(0)  编辑  收藏 所属分类: 搜索引擎

只有注册用户登录后才能发表评论。


网站导航:
博客园   IT新闻   Chat2DB   C++博客   博问  
 
森露2013新款豹纹打底衫 高领 女 长袖 修身长袖t恤女 加绒加厚冬 2013春秋新款女装 潮修身大码长袖小西装外套女 韩版中长款小西装 忧忧鱼2013秋冬新款直筒裤女显瘦长裤加绒黑色休闲裤修身西裤女裤