Я в основном хочу, чтобы Solr просматривал каждую запись многозначного поля для моего параметра поиска. Читайте мой пример:
Я использую Solr для индексации своих данных. У меня есть данные приложения в параллельных массивах (в форме многозначных полей), которые соответствуют данному продукту. Смотрите следующий пример, где make, model и year являются многозначными полями:
<-solr record start-><br>
sku: 1234 <br>
make: acura, acura, acura <br>
model: integra, rsx, rsx<br>
year: 1997, 2004, 2000<br>
engine: 3.4, 4.5, 4.5<br>
<-solr record end->
Я использую запросы фильтра (& fq =), чтобы сузить выбор. Проблема в том, что если кто-то ищет Acura Integra 2000 года, она будет соответствовать приведенной выше записи, но, поскольку данные о марке, модели и году кодируются параллельно, на самом деле для этого продукта нет Acura Integra 2000 года. Solr сопоставляет марку в поле make, модель в поле модели и год в поле year (как и должно быть) и возвращает этот результат, не учитывая мой параллелизм.
Мой запрос будет выглядеть так:
<br>
fq=make:"acura"&fq=model:"integra"&fq=year:2000 <i>(I would normally escape URL characters when I POST to Solr, this is just an example)</i>
Таким образом, мое решение состояло в том, чтобы создать другое многозначное поле, называемое сводным полем, в которое я бы поместил все данные о марке, модели, году и других данных (например, движок), разделенные пробелом. Необходимо заключать в кавычки слова, чтобы термины с несколькими словами не совпадали с параметрами поиска. Приведенный выше пример теперь будет выглядеть так:
<-solr record start-><br>
sku: 1234 <br>
make: acura, acura, acura <br>
model: integra, rsx, rsx<br>
year: 1997, 2004, 2000<br>
engine: 3.4, 4.5, 4.5<br>
summary: "acura" "integra" "1997" "3.4", "acura" "rsx" "2004" "4.5", "acura" "rsx" "2000", "4.5"<br>
<-solr record end->
Затем я добавляю к своему запросу следующее:
summary:(""acura" AND "integra" AND "2000")
Если бы я добавил это к своему запросу, я бы ожидал, что эта запись больше не будет появляться, поскольку в поле сводки нет acura integra 2000. Тем не менее, это не работает. Запись все еще идет. Я в тупике. У кого-нибудь есть решение этой проблемы. Это убивало меня несколько дней.
Я в основном хочу, чтобы Solr просматривал каждую запись в многозначном поле для моего параметра поиска. Возможно ли это? Есть ли лучший способ сделать то, что я пытаюсь сделать?
Спасибо