gpt4 book ai didi

java - 使用日期范围内的 lucene 和 AND 运算符进行搜索

转载 作者:行者123 更新时间:2023-11-30 09:18:57 25 4
gpt4 key购买 nike

我想在 lucene 3.0.1 中进行一个查询,该查询将在日期范围内以及通过另一个 AND 条件为我提供数据。这是两个日期之间查询的代码:

 IndexSearcher searcher = new IndexSearcher(directory);
String lowerDate = "2013-06-27";
String upperDate = "2013-06-29";
boolean includeLower = true;
boolean includeUpper = true;
TermRangeQuery query = new TermRangeQuery("created_at",lowerDate, upperDate, includeLower, includeUpper);

// display search results
TopDocs topDocs = searcher.search(query, 10);
for (ScoreDoc scoreDoc : topDocs.scoreDocs) {
Document doc = searcher.doc(scoreDoc.doc);
System.out.println(doc.get("id"));
}

我有一个索引列文本,如何在此查询中包含一个 AND 条件,我试图在日期范围内获得结果,该结果也在测试列中包含一些关键字。

最佳答案

您需要使用 BooleanQuery ,比如:

TermRangeQuery dateQuery = new TermRangeQuery("created_at",lowerDate, upperDate, includeLower, includeUpper);
TermQuery keywordQuery = new TermQuery(new Term("keyword", "term"));
BooleanQuery bq = new BooleanQuery();
bq.add(new BooleanClause(dateQuery, BooleanClause.Occur.MUST))
bq.add(new BooleanClause(keywordQuery, BooleanClause.Occur.MUST))

// display search results
TopDocs topDocs = searcher.search(bq, 10);

组合两个子句,每个子句都带有BooleanClause.Occur.MUST,相当于一个“AND”(看一下“MUST”的说明), BooleanClause.Occur documentation 中的“SHOULD”和“MUST_NOT”,以便更好地理解您使用 Lucene 的“boolean ”逻辑的选项。

关于java - 使用日期范围内的 lucene 和 AND 运算符进行搜索,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18215174/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com