я в основном хочу Solr искать каждую запись многозначного поля для моего параметра поиска .. читать для моего примера:В Solr, Как запросить против одного поля для отдельного набора значений в многозначное поле
Я использую Solr для индексации моих данных. У меня есть данные приложения в параллельных массивах (в виде многозначных полей), которые соответствуют данному продукту. Смотрите следующий пример, где марка, модель и год многозначное поле:
<-solr record start->
sku: 1234
make: acura, acura, acura
model: integra, rsx, rsx
year: 1997, 2004, 2000
engine: 3.4, 4.5, 4.5
<-solr record end->
Я использую фильтр запросы (& FQ =), чтобы сузить мой выбор. Проблема в том, что если кто-то ищет 2000 Acura Integra, он будет соответствовать вышеупомянутой записи, но поскольку данные о make, model и year закодированы параллельно, на самом деле нет 2000 Acura Integra для этого продукта. Solr соответствует марку в поле make, модели в поле модели и году в поле года (как и должно быть) и возвращать этот результат, а не уважать мой параллелизм. мой запрос будет выглядеть следующим образом до сих пор:
fq=make:"acura"&fq=model:"integra"&fq=year:2000 (I would normally escape URL characters when I POST to Solr, this is just an example)
Так что мое решение было создать еще одно многозначное поле, называемое резюме поле, в котором я бы поставил все марку, модель, год и другие данные (например, двигатель) вместе разделены пробелом. Необходимо иметь цитаты вокруг слов, поэтому термины с несколькими словами не совпадают с параметрами поиска непреднамеренно. Приведенный выше пример будет выглядеть следующим образом:
<-solr record start->
sku: 1234
make: acura, acura, acura
model: integra, rsx, rsx
year: 1997, 2004, 2000
engine: 3.4, 4.5, 4.5
summary: "acura" "integra" "1997" "3.4", "acura" "rsx" "2004" "4.5", "acura" "rsx" "2000", "4.5"
<-solr record end->
Затем я добавить в мой запрос следующим образом:
summary:(""acura" AND "integra" AND "2000")
Я бы ожидать, если бы я добавил, что на мой вопрос, что это запись больше не будет появляться, поскольку в поле резюме нет acura integra 2000. Однако это не работает. Запись все еще появляется. Я в тупике. У кого-нибудь есть решение этой проблемы. Это убивало меня целыми днями.
Я в основном хочу, чтобы Solr выполнял поиск каждой записи многозначного поля для моего параметра поиска .. это возможно? Есть ли лучший способ сделать то, что я пытаюсь сделать?
Thanks
Эй. Это было мое оригинальное решение, и оно отлично работает! Единственная проблема, когда вы переходите на экран продукта моего сайта, вы просматриваете количество приложений, а не количество продуктов. Если один и тот же make, model и year принадлежит к sku, и только двигатель или подмодель отличается, я просто заявляю, что в разделе «подходит» под продуктом. Например, я мог бы свернуть 4 приложения вместе в один «ящик» продукта на моем сайте. Результаты поиска должны сказать, что просмотр 1 из 1. Вместо этого он говорит, что просмотр 4 из 4 (хотя на экране есть один ящик). Следовательно, моя новая схема ... – Dan
@ Dan: взгляните на сворачивающееся поле: http://wiki.apache.org/solr/FieldCollapsing –
Поскольку проблема в SKU (12345) может поместиться в несколько транспортных средств. имея каждый автомобиль SKU +, поскольку его собственная запись хороша, но просмотр их как клиента ужасен. Свернув каждое транспортное средство (и приложения) и привязывая его к тому же SKU, который он подходит, он делает его более удобным для просмотра. Однако, возможно, вы просматриваете 10 приложений на странице, но у вас есть только 3 «коробки», в которых пользователь может что-то купить. Так говорится в разделе «Просмотр элементов с 1 по 10», но перечислены только 3 «коробки» с картинками и кнопка «нажмите, чтобы купить». – Dan