我通过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/