2

我通过 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””?

太谢谢了。

4

1 回答 1

0

我不完全确定我理解你。term2如何拆分成多个term?它只是存储在您正在谈论的变量中的术语列表吗,例如: 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)"
于 2012-11-07T19:45:24.587 回答