Java中的Lucene(QueryParser)

时间:2012-11-07 11:13:14

标签: java lucene

我通过QueryParser创建查询:

QueryParser parser = new QueryParser(Version.LUCENE_30, "Text", new RussianAnalayzer());
parser.setDefaultOperator(QueryParser.Operator.AND);
Query query = parser.parse(searchString);

当我使用单词中有变体的短语时,我会与“AND”联合起来,如:“term1 term2” - > “term1 AND”term2_1 AND term2_2“”。 我怎样才能获得如下的查询:“term1 AND”term2_1 OR term2_2“”而不拆分字符串?

非常感谢。

1 个答案:

答案 0 :(得分:0)

我不完全确定我理解你。 term2如何分成多个术语?它只是存储在您正在谈论的变量中的术语列表,例如:     term1 =“term1”     term2 =“term2_1 term2_2”     query = term1 +“”+ term2;

或者它真的只有两个术语,它们会自动分开(通过分析器或其他东西)?

无论如何,我认为改变第二行可能会达到你的目的:

parser.setDefaultOperator(QueryParser.Operator.OR);
//Or just delete this line if you prefer, OR is the default behavior.

并传递一个有意义的查询,例如:

"term1 AND (term2)"

大概相当于:

"term1 AND (term2_1 term2_2)"