2017-01-31 13 views
0

Мы работаем над реализацией функции автозаполнения для сайта электронной коммерции. В настоящее время мы любим реализацию SuggestComponent, но, возможно, можем попробовать другие варианты (FacetComponent, ...). У нас есть одно ядро ​​с одноязычным контентом.Solr 5.3 autocompletion: предложения, ограниченные ролью пользователя, местоположением, кампанией и т. Д.

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

Я изучал Интернет, но не нашел решения для этого варианта использования, к сожалению. Это фактически выходит за рамки контроля доступа к документам в соответствии с ролями пользователя: не должно быть даже предложений терминов, которые приводят только к ограниченному контенту.

Я был бы очень рад, если бы у кого-то были какие-то намеки, советы, лучшие практики для меня. Заранее спасибо!

ответ

0

В случаях с большим количеством деловых правил в дополнение к предложениям я бы рекомендовал создать отдельную коллекцию для ваших требований к автозавершению. Это позволит вам прикрепить любые идентификаторы к любому термину, который может быть завершен, и вы можете отфильтровать те, у которых есть обычные предложения fq. Он также позволяет применять повышающие функции, как и следовало ожидать, чтобы вы могли повысить эти продукты в кампаниях во время проведения кампаний.

Как правило, у вас должно быть поле с эграммированным или edgengram-ed, которое содержит термины, которые могут быть автозаполнены (фактический поиск), метаданные о документе и ссылку, чтобы вы могли искать документ, если это фактически выбранный.

Если вы используете Amazon в качестве примера, у вас будет имя продукта/строки, которое будет автозаполнено, его отдел (книги/музыка/tv/регулярная строка поиска/etc.), Идентификатор продукта и, например, соответствующую фотографию объекта.

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

Другим вариантом является включение этого в каждый продукт и использование отдельного поля ngram/edgengram для автозаполнения - это увеличит размер вашего основного индекса, который может быть не идеальным, но он будет работать так же, как и отдельная коллекция без необходимости представлять документы в две коллекции.

+0

спасибо! Это очень полезный намек с отдельным индексом автозаполнения. Не думал об этом. – AnKiMu