是否可以在使用OR运算符时在solr中进行邻近查询,例如:
TERM1: “三星” term2:“galaxy note”或“galaxy 3”或......
我需要找到我是否同时接近term1和term2。
答案 0 :(得分:0)
Solr 4.4默认不支持此版本,目前是最新版本。
SOLR-1604有一些相关信息。
答案 1 :(得分:0)
这里简单的方法是生成一组较长的短语查询,而不是单独查找“三星”和“星系音符”,将它们连接在一起,为您提供更多类似的内容:
"Samsung galaxy note" OR "Samsung galaxy 3" ...
并将其设置为具有所需的污垢量。
您也可以使用ComplexPhraseQueryParser处理类似案例,但我不确定它是否会处理短语中的替代短语。 SurroundQueryParser也支持此类事情,但不进行任何分析,这意味着您必须事先分析子查询(请参阅文档中的“限制”部分)。
如果您想手动生成查询,可以使用一组SpanQuery
更直接地支持此查询,这看起来像:
Query rootQuery = parser.parse("\"Samsung\"");
Query option1Query = parser.parse("\"galaxy note\"");
Query option2Query = parser.parse("\"galaxy 3\"");
Query option3Query = parser.parse("\"something else\"");
SpanQuery orQuery = new SpanOrQuery(
new SpanMultiTermQueryWrapper(option1Query),
new SpanMultiTermQueryWrapper(option2Query),
new SpanMultiTermQueryWrapper(option3Query)
);
SpanQuery finalQuery = new SpanNearQuery({new SpanMultiTermQueryWrapper(rootQuery), orQuery}, slop, true);