У меня есть несколько вопросов относительно дизайна схемы solr.По сути, я настраиваю поисковую систему для веб-сайта каталога продуктов, и мои таблицы взаимосвязи таковы:
Product
Принадлежит Merchant
Product
Принадлежит Brand
Product
имеет и принадлежит многим Categories
Category
имеет много Sub Categories
Sub Category
имеет много Types
Type
имеет много Sub Types
Пока мой Schema.xml выглядит следующим образом.
<field name="product_id" type="string" indexed="true" stored="true" required="true" />
<field name="name" type="string" indexed="true" stored="true"/>
<field name="merchant" type="string" indexed="true" stored="true"/>
<field name="merchant_id" type="string" indexed="true" stored="true"/>
<field name="brand" type="string" indexed="true" stored="true"/>
<field name="brand_id" type="string" indexed="true" stored="true"/>
<field name="categories" type="string" multiValued="true" indexed="true" stored="true"/>
<field name="sub_categories" type="string" multiValued="true" indexed="true" stored="true"/>
<field name="types" type="string" multiValued="true" indexed="true" stored="true"/>
<field name="sub_types" type="string" multiValued="true" indexed="true" stored="true"/>
<field name="price" type="float" indexed="true" stored="true"/>
<field name="description" type="text" indexed="true" stored="true"/>
<field name="image" type="text" indexed="true" stored="true"/>
<field name="text" type="text" indexed="true" stored="false" multiValued="true"/>
<uniqueKey>product_id</uniqueKey>
<defaultSearchField>text</defaultSearchField>
<solrQueryParser defaultOperator="OR"/>
<copyField source="name" dest="text"/>
<copyField source="merchant" dest="text"/>
<copyField source="brand" dest="text"/>
<copyField source="categories" dest="text"/>
<copyField source="sub_categories" dest="text"/>
<copyField source="types" dest="text"/>
<copyField source="sub_types" dest="text"/>
Итак, мои вопросы сейчас:
1) Правильна ли схема?
2) Предположим, мне нужно найти продукты для Category XYZ
.Мой старший программист не любит запрашивать solr по Category Name
, вместо этого он не хочет использовать CategoryID
.Он предлагает сохранить CategoryID_CategoryName (1001_Category XYZ)
и с веб-сайта отправляет ID.(Предполагая, что Имена с пробелами не работают должным образом.)
Поэтому, чтобы найти продукты, я должен затем выполнить частичное совпадение categories
и определить идентификатор категории из строки, то есть (fetch 1001 from 1001_Category XYZ)
или Чтоесли я оставлю Имена в поле categories
и настрою другое поле для category_ids
?это кажется лучшим вариантом для меня.
или
существует ли какой-либо многозначный тип поля Solr для хранения CategoryID
и CategoryName
вместе?
Дайте мне знать ваши мысли, спасибо.