lucene3.0 中BooleanQuery 的使用

lucene3.0中BooleanQuery 实现与或的复合搜索 .
BooleanClause用于表示布尔查询子句关系的类,包括:BooleanClause.Occur.MUST,BooleanClause.Occur.MUST_NOT,BooleanClause.Occur.SHOULD。必须包含,不能包含,可以包含三种.有以下6种组合:

1.MUST和MUST:取得连个查询子句的交集。
2.MUST和MUST_NOT:表示查询结果中不能包含MUST_NOT所对应得查询子句的检索结果。
3.SHOULD与MUST_NOT:连用时,功能同MUST和MUST_NOT。
4.SHOULD与MUST连用时,结果为MUST子句的检索结果,但是SHOULD可影响排序。
5.SHOULD与SHOULD:表示“或”关系,最终检索结果为所有检索子句的并集。
6.MUST_NOT和MUST_NOT:无意义,检索无结果。

private static void search(String str) throws Exception {

IndexReader reader = IndexReader.open(FSDirectory.open(new File(

INDEX_DIR)), true); // only searching,

// so read-only=true

Searcher searcher = new IndexSearcher(reader);

Analyzer analyzer = new IKAnalyzer();

String field = "contents";

QueryParser parser = new QueryParser(Version.LUCENE_CURRENT, field,

analyzer);
Query query = null;

str = getKeyWord(str);

query = parser.parse(str);

BooleanQuery q = new BooleanQuery();

q.add(query, BooleanClause.Occur.MUST);

QueryParser parser2 = new QueryParser(Version.LUCENE_CURRENT, "keyword", analyzer);

Query q2 = parser2.parse(str);

// q2.setBoost(10);
q.add(q2, BooleanClause.Occur.SHOULD);

TopScoreDocCollector collector = TopScoreDocCollector.create(10, false);
searcher.search(q, collector);

ScoreDoc[] hits = collector.topDocs().scoreDocs;

}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值