2012-06-12 4 views
0

Мы реализуем solr с помощью приложения для электронной торговли. Основная цель - ускорить поиск и улучшить навигацию по каталогам.Solr Schema.xml для грамотного поиска

Проблема в том, что мы не можем понять, как сопоставить динамические грани в Solr. Когда я говорю, динамический аспект, я имею в виду это ...

Samsung Galaxy S3

  • Категория: Смартфон
  • Марка: Samsung
  • ОС: Android
  • Оперативная память: 1 GB
  • Процессор: 1 ГГц
  • Камера: 8MP
  • Дисплей: 4,7 дюйма
  • и как ..

критерии фильтрации, как ОС, память, процессор, камера и т.д. динамичны каждому продукту, некоторые есть это и некоторые имеет совершенно иной набор критериев фильтрации для граней. Поэтому, когда кто-то нажимает на Android, результат будет отфильтрован всеми телефонами Android в выбранной категории.

Мы сталкиваемся с проблемой, когда мы не можем решить, как выглядит solr schema.xml для поддержки такого рода словарей данных для грантового поиска.

+0

Добавление пример того, как вы бы решить такого рода вопрос, будет очень ценны ответ. – Krunal

ответ

3

Динамические поля - это то, что вам нужно.

Можно даже сделать это:

product_name : samsung nexus 
android_version_t : 4.0 
partner_store_price_i : 19800 

В _t и _i суффиксы следует понимать, как текст и целых типов, если вы установите схему таким образом.

<dynamicField name="*_i" type="int" indexed="true" stored="true"/> 
<dynamicField name="*_s" type="string" indexed="true" stored="true"/> 
<dynamicField name="*_l" type="long" indexed="true" stored="true"/> 
<dynamicField name="*_t" type="text" indexed="true" stored="true"/> 

http://www.tnrglobal.com/blog/2010/07/dynamic-fields-in-apache-solr/

http://wiki.apache.org/solr/SchemaXml#Dynamic_fields

+0

Айтчню, у меня тоже такая же проблема. Означает ли это, что для каждого такого динамического атрибута, применяемого к продукту, который должен быть отфильтрован, мне нужно принять их как динамическое поле? Как насчет грантового поиска? Нужно ли это определять в schema.xml? – Krunal

+0

Да, это нужно определить. И это происходит со схемой по умолчанию. Это удобно, если у вас есть индекс, который должен хранить большое количество полей. – aitchnyu

+0

Что вы имеете в виду, когда говорите: «Это удобно, если у вас есть индекс, который должен хранить большое количество полей»? –

2

Развернувшись на ответе выше.

У вас могут быть такие поля, как isSpecial, boolean, specialCategoryType. В приведенном выше случае они имеют значение true и android.

Когда этот элемент выбран (isSpecial), вы можете уточнить запрос и добавить в предикат specialCategoryType: android.

Edit:

Допустим, есть два продукта, андроид телефон и андроид ноутбук. телефон 1- os: android; тип: телефон; Камера: 8MP; specCatFacet: os, тип, камера; specCatRefine: os, тип laptop-os: android; тип: ноутбук; Размер экрана: 13; specCatFacet: ОС, тип, экран; specCatRefine: os, тип телефон 2 - os: android; тип: телефон; Камера: 4MP; specCatFacet: os, тип, камера; specCatRefine: os, type

Когда люди, ищут андроид, все три появятся. Отображаемые грани могут быть объединением обоих наборов фасетов.

При нажатии на телефон1 или 2 вы увидите поле specCatRefine и уточните критерии поиска с помощью os, введите и используйте specCatFacet, чтобы впоследствии их украсить.

Когда ноутбук нажат, поиск уточняется на os, набирает и фасетет на os, type, screen.

По существу, уточнение и фасетирование второго поискового термина основано на поле в каждом документе. У вашего поискового термина будет много этой логики о том, как создать критерии.

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

+0

Привет, Не могли бы вы рассказать об этом ... точно не поняли, что вы подразумеваете под этим. – Krunal

+0

Когда пользователь нажимает на определенный тип продукта, вы хотите уточнить исходные критерии пользователя, добавив этот тип продукта. Вы хотите сделать это только для определенных специальных типов (предположил я). Таким образом, тип boolean определяет, является ли это особым типом, а второй - для определения значения. По сути, я не думал, что нужен «динамический» аспект, а не уточнение критериев поиска. – user1452132

+0

Я тоже не понял этого ... не могли бы вы объяснить на примере? –