十七、搜索过滤

public void searcherByFilter(String queryStr,Filter filter) {
        try {
            IndexSearcher searcher = getSearcher();
            QueryParser parser = new QueryParser(Version.LUCENE_35,"content",new StandardAnalyzer(Version.LUCENE_35));
            Query query = parser.parse(queryStr);
            TopDocs tds = null;
            if(filter!=null)
                tds = searcher.search(query,filter,50);
            else {
                tds = searcher.search(query, 50);
            }
            SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
            for(ScoreDoc sd:tds.scoreDocs) {
                Document d = searcher.doc(sd.doc);
                System.out.println(sd.doc+":("+sd.score+")" +
                        "["+d.get("filename")+"【"+d.get("path")+"】--->"+
                        d.get("size")+"-----"+sdf.format(new Date(Long.valueOf(d.get("date"))))+"]");
            }
            searcher.close();
        } catch (NumberFormatException e) {
            e.printStackTrace();
        } catch (CorruptIndexException e) {
            e.printStackTrace();
        } catch (ParseException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }



public void test02() {
        Filter tr = new TermRangeFilter ("filename", "java.hhh", "java.she", true, true);
        tr = NumericRangeFilter.newIntRange ("size", 500, 900, true, true);
        //可以通过一个Query进行过滤
        tr = new QueryWrapperFilter (new WildcardQuery(new Term("filename", "*.txt")));
        st.searcherByFilter("java", tr);
    }


你可能感兴趣的:(搜索)