0

是否可以在使用 OR 运算符时在 solr 中进行邻近查询,例如:

term1:"三星" term2:"galaxy note" OR "galaxy 3" OR ...

我需要找出我是否同时拥有 ~n 邻近度的 term1 和 term2。

4

2 回答 2

0

这里的简单方法是只生成一组更长的短语查询,而不是分别查找“Samsung”和“galaxy note”,而是将它们连接在一起,为您提供更像:

"Samsung galaxy note" OR "Samsung galaxy 3" ...

并将其设置为具有所需的倾斜量。

您也可以使用处理类似情况的ComplexPhraseQueryParser ,但我不确定它是否处理短语中的备用短语。 SurroundQueryParser也支持这种事情,但不做任何分析,这意味着您必须事先分析您的子查询(请参阅文档中的限制部分)。

如果要手动生成查询,可以使用一组SpanQuerys 更直接地支持这一点,如下所示:

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);
于 2013-09-17T15:48:14.907 回答
0

目前最新版本的 Solr 4.4 默认不支持此功能。

SOLR-1604有一些相关信息。

于 2013-09-16T19:53:15.727 回答