Я сталкиваюсь с некоторым запутанным поведением с запросами solr (технически разбор Lucene), который можно упростить до запроса, подобного следующему:
_query_:"foo:\"a b\"~3" AND foo:"c d"~6
Использование debugQuery
опция, которую я вижу, это анализируется как:
+PhraseQuery(foo:\"a b\"~3) +PhraseQuery(foo:\"c d\")
или как parsedquery_toString, +foo:\"a b\"~3 +foo:\"c d\"
Что произошло вблизи ~ 6 справасторона запроса?Это может произойти только при объединении вложенного запроса с не вложенным запросом, как в примере выше.
Для сравнения: без использования вложенного запроса и записи
foo:"a b"~3 AND foo:"c d"~6
Правильно обрабатывается как
+PhraseQuery(foo:\"a b\"~3) +PhraseQuery(foo:\"c d\"~6)
или как parsedquery_toString, +foo:\"a b\"~3 +foo:\"c d\"~6
Или, альтернативно, используя два вложенных запроса, как в:
_query_:"foo:\"a b\"~3" AND _query_:"foo:\"c d\"~6"
Также анализируется правильно, чтобы быть идентичным запросу без использованиявложенные запросы.
Почему поиск близости ~ 6 в первом примере отбрасывается?
Я использую Solr версии 4.10.3, но обновился до 7.5.0, и я нахожутакое же поведение.