日期:2014-05-18  浏览次数:20681 次

lucene4.4复合模糊查询
假定lucene的document中存储了3个StringField域,分别是"site","channel","title",现在要做多字段匹配且包含模糊的查询,查询条件为:site="1" AND channel="10" AND title 包含“中国”关键字的数据,不晓得该怎么写?
当前使用的lucene4.4,请不吝赐教,谢谢!

这种方式:Query query = new TermQuery(new Term("title","中国"));必须完全匹配,标题为"中国人民"、"中国上海"这样的都搜索不出来。

------解决方案--------------------

Query query = new WildcardQuery(new Term("title","*中国*"));

另外还与你建索引时的分词方式有关。
------解决方案--------------------

        BooleanQuery query = new BooleanQuery();
        query.add(new TermQuery(new Term("site", "1")), BooleanClause.Occur.MUST);
        query.add(new TermQuery(new Term("channel", "10")), BooleanClause.Occur.MUST);
        query.add(new WildcardQuery(new Term("title", "*中国*")), BooleanClause.Occur.MUST);