lucene3.0.3 |在搜索条件中出现多个布尔查询时获取正确的文档

时间:2011-02-18 16:13:05

标签: lucene

我正在使用像

这样的查询
criteria = (sql OR sqlserver OR "sql server") AND java AND delphi .

在这种情况下,当我使用默认解析器作为下面的代码时提到:

QueryParser parser = new QueryParser(Version.LUCENE_CURRENT, field, analyzer);
Query query = parser.parse(criteria);

当我在下面的代码中使用 QueryParser.OR_OPERATOR 时,我得到相同数量的文档:

QueryParser parser = new QueryParser(Version.LUCENE_CURRENT, field, analyzer);
parser.setDefaultOperator(QueryParser.OR_OPERATOR);
Query query = parser.parse(criteria); 

这是不正确的。 请!建议我可行的解决方案

如果在搜索条件中出现多个布尔查询,怎么能得到正确的文档?

2 个答案:

答案 0 :(得分:0)

如果您的查询指定了运算符:

  

criteria =(sql OR sqlserver或“sql server”)和java AND delphi

然后设置默认运算符无效。如果您已按如下方式指定了查询:

  

criteria =(sql sqlserver“sql server”)java delphi

然后将默认运算符设置为OR将导致查询解释为:

  

criteria =(sql OR sqlserver或“sql server”)或java OR delphi

顺便说一句,QueryParser的默认运算符是OR - 请参阅Lucene QueryParser javadoc

答案 1 :(得分:0)

从您的代码中,您的查询将搜索索引中的所有文档,其中字段包含术语“java”和“delphi”,以及{sql,sqlserver,“sql server”}中的一个或多个。你所呈现的内容在语法上或概念上都没有任何错误,所以我怀疑问题在于如何将字段编入索引。我建议选择Luke并使用它来分析您的索引。