Надбавка SOLR/Lucene по ориентированным на пользователя критериям

Мы переключаем от Полнотекстового поиска SQL до Lucene (стек SOLR) поиск за следующие несколько месяцев. Одна последняя морщина в выяснении нашей стратегии здесь имеет к с репликацией одной текущей части нашей платформы поиска.

Во-первых, некоторая номенклатура, чтобы описать проблему: на Нашем сайте есть связка документов. Люди могли бы "добавить" те документы, они могли бы "фаворит" те документы, они могли бы "прочитать" те документы и т.д. Давайте назовем тот союз таких документов для данного пользователя их "личными документами". Некоторые документы общественные, и некоторые частные так, чтобы только вошедший пользователь видел их.

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

Аналогия - Facebook - где, когда вы печатаете "Джо", это сначала найдет весь Joes, который вы знаете, сопровождаемый любым другим Джо, который соответствует критериям. Мой поиск "Джо" возвратит различное упорядоченное множество, чем ваш поиск Джо.

В мире Lucene/SOLR, поскольку я понимаю его, я не могу выяснить, как иметь такую ориентированную на пользователя надбавку документов без двух отдельных вопросов, которые являются тогда эффективно UNIONed вместе (я знаю, это не относительно, но вы получаете идею). У нас есть миллионы пользователей и сотни тысяч документов. Если пользователь вошел, мы хотим, "чтобы их документы" обнаружились сначала в любом поиске, то остальная часть всех документов. И в каждом случае, мы хотим результаты поиска показать только те документы, которые соответствуют оригинальному поиску - мы просто говорим об упорядоченном.

Можно ли думать о каких-либо стратегиях здесь, чтобы воспроизвести эту особенность "определенная функция пользователя"?

0
nl ja de

1 ответы

Можно ли позволить себе иметь область в каждом документе, говоря, что этот конкретный документ принадлежит Джиму (например, user123Doc:1 )? Если да, вы могли бы решить его, сортировав набор результатов {user123Doc, счет...} .

Или, если вы не хотите хранить эту информацию в Lucene, можно сохранить это в другом месте (например, в базе данных) и орудие FieldComparator , таким образом, это работает с этими ценностями. Больше на этом доступно здесь.

1
добавлено
Спасибо @mindas для вашего ответа. Нет, с 1.8 миллионами пользователей, it' s не реалистичный иметь область для каждого из них. Но количество "моих документов" в наборе управляемо, почти всегда меньше чем 1,000 - таким образом, я думаю подход I' взятие ll должно припрятать документ про запас ID' s и затем применяют его как filterQuery на ПОЧТЕ к SOLR. Или возможно даже два отдельных filterQueries - показывают докторам, соответствующим критериям В наборе документа а НЕ В наборе документа, позволяя ищущей пользовательской пуговице между ними. Haven' t закончил эту работу, но that' s путь I' m на. Класс FieldComparator плохо мне знаком.
добавлено автор user61307, источник
SEO chat
SEO chat
5 476 участник(ов)

Чат про SEO. Speak Russian! Др.чаты: @ppcchat @uiux_chat @devschat @smmhell Работа: @seohr Канал: @seolife Аудит: tpv.sr/1QoBSBb Стата: tpv.sr/1QoBMrK/ Запрещено: - мат и брань - команды ботам - реклама, вакансии - религия, политика, наркота, крипта