我通过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“”而不拆分字符串?
非常感谢。
答案 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)"