首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > Java相关 >

lucene4.x怎么根据某字段进行筛选

2013-11-02 
lucene4.x如何根据某字段进行筛选?字段publish是StringField类型的,以下为该字段的添加方法doc.add(new St

lucene4.x如何根据某字段进行筛选?
字段publish是StringField类型的,以下为该字段的添加方法


doc.add(new StringField("publish", publish, Field.Store.YES));


现在要解决的是如何根据该字段进行筛选,如搜索出来的结果仅仅是publish="微博" 的结果。
如何才能做到?

我试着在IndexSearcher的search方法中使用FieldValueFilter或TermsFilter类,好像都做不到。

先谢谢了
[解决办法]
直接用IndexSearcher+Query查询就行了,不用Filter。

        try {
            FSDirectory fsdir = FSDirectory.open(new File("索引路径"));
            IndexReader reader = DirectoryReader.open(fsdir);
            fsdir.close();
            IndexSearcher searcher = new IndexSearcher(reader);
            Query query = new TermQuery(new Term("publish", "微博"));
            ScoreDoc[] hits = searcher.search(query, 5000).scoreDocs;
            int size = hits.length;
            for (int i = 0; i < size; i++) {
                Document doc = searcher.doc(hits[i].doc);
                System.out.println(doc.get("publish"));
            }
        } catch (IOException ex) {
            ex.printStackTrace(System.err);
        }

热点排行