Запрашивать по порядку индексы Solr, останавливаться, когда вы получаете совпадение? - PullRequest
0 голосов
/ 27 июля 2011

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

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

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

-Matt

1 Ответ

0 голосов
/ 27 июля 2011

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

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

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

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

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

...