Запрашивать индексы Solr по порядку, останавливаясь, когда вы получаете совпадение?

У меня есть настройка, в которой у меня есть два индекса в solr: product_code и title. product_code использует StrField, а title использует TextField с DoubleMetaphone.

У меня есть одно окно поиска, в котором пользователи могут ввести либо код продукта, либо свободный текст для поиска по заголовку. В настоящее время я использую dismax и делаю заголовок qf=product_code. Моя проблема заключается в том, что очень часто код продукта (например, LC12345) может соответствовать слову в заголовке после применения DoubleMetaphone.

Итак, что я хочу сделать, так это построить запрос таким образом, чтобы он сначала применял термин запроса к индексу product_code и только в случае отсутствия совпадений затем применял запрос термин к титульному указателю. Есть ли способ сделать это без необходимости делать два отдельных запроса к Solr? Это для «живого поиска» AJAX, поэтому я хочу свести задержку к минимуму, поэтому не хочу делать два отдельных запроса к Solr.

-Мэтт


person Matt Hamilton    schedule 27.07.2011    source источник


Ответы (1)


Ответ ист - нет. Если я правильно понял, вам нужно что-то вроде. q=X, если ответ = o q=Y. В Solr такой функции нет. даже если бы это было необходимо, чтобы solr дважды запрашивал индекс, что было бы таким же, как использование двух запросов.

То, что я предлагаю вам сделать, чтобы улучшить ваше приложение только с одним запросом (если это действительно необходимо), - это использовать query-booster. Если вы установите что-то вроде

product_code: запрос ^ 5 и заголовок ^ 1

в вашем solrconfig для индексированных данных. В результате у вас будут результаты product_code вверху, а заголовки где-то внизу. В случае отсутствия product_code будут только результаты title.

Надеюсь, это поможет

person user523859    schedule 27.07.2011