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

太谢谢了。

最佳答案

我不完全确定我了解您。 term2如何拆分为多个术语?它只是存储在您正在谈论的变量中的术语列表,例如:
    term1 =“ term1”
    term2 =“ term2_1 term2_2”
    查询= 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)"

关于java - Java中的Lucene(QueryParser),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/13268552/

10-09 19:41