带空格和带查询和操作的 Solr 查询

Solr query with white spaces and with query and operation

我正在我的项目中开发一个搜索解决方案,除一种情况外,一切正常。搜索查询操作是 AND (q.op=AND),当我搜索某些东西时:40486 52P.57 它没有给出任何结果(这里的查询是在 java 中准备的),但是当我在 solr 管理面板中搜索相同内容时,它给出了正确的结果。在我的 java 代码中,我正在转义搜索查询,因此查询会像 q : 40486\ 52P.57 一样传递给 solr,但是当我在 solr admin 中执行它时,它就像 q : 40486 52P.57.

注:上述搜索查询中的两个词属于两个不同的领域。

我注意到的另一件事是,如果搜索查询中的词属于同一个字段,那么结果会很好,没有任何问题,例如:40486 67 两个词都属于同一个字段,来自我的 java 代码的查询是 q: 40486\ 67 而在 solr admin 中它是 q : 40486 67 但在这两种情况下它都工作正常。

我在这里看不出任何问题,有人可以帮我解决这个问题吗?

更新

我找到了它不起作用的根本原因。问题在于转义 space。实际上,我正在使用 qf 中的各个字段来搜索 100% 匹配,在这种情况下我的意思是 mm=100。因此,转义 space 将使查询成为 q : 40486\ 52P.57 并且不给出任何结果,但是如果我将多字段与其中的所有可搜索字段一起使用,那么即使查询是 [=12] 它也会给出结果=].这是 solr 中 edismax 的限制吗?有人可以帮助我如何在不创建多字段的情况下解决这个问题吗?我的期望是即使在使用 qf 参数中的各个字段转义 space 之后它也应该工作。

示例索引:

{
productNumber : 40486754,
productShot : 52P.57 UTM, 
description : something,
general_search {
  40486754,
  52P.57 UTM,
  something
}
},
{
productNumber : 12345,
productShot : 52P.57 ABC, 
description : xzy,
general_search {
  12345,
  52P.57 ABC,
  xzy
}
}

示例查询: 查询 1:

qt=/select&q.op=AND&defType=edismax&q=40486\+52P.57&qf=productNumber+productShot+description

查询 2:

qt=/select&q.op=AND&defType=edismax&q=40486 52P.57&qf=productNumber+productShot+description

查询 3:

qt=/select&q.op=AND&defType=edismax&q=40486\+52P.57&qf=general_search

在上述查询中,查询 2 和 3 有效但查询 1 无效

问题出在白色space处的转义上。当我转义 whitespace 时,它被视为单个单词“40486 52P.57”,而当 space 未转义时,它被视为两个不同的单词 40486 和 52P.57,因此它工作正常。