Приложение, над которым я работаю, использует Solr для индексирования страниц или товаров из разных магазинов.Когда я говорю «товары из разных магазинов», это означает, что товар может быть доступен в магазине A или магазине B, но не в магазине C. Если покупатель подключен к веб-сайту магазина C и ищет продукт, который недоступенв этом магазине он не должен отображаться в результатах поиска.
У меня есть поле «тип» в моей схеме, которое позволило мне определить, является ли документ «страницей» или «продуктом».Теперь, когда у меня есть это поисковое ограничение, это поле содержит либо «страницу», либо составной ключ, такой как «productA» из «productB».Как вы уже догадались, A или B - это идентификатор магазина.
Для каждого продукта в БД я буду индексировать его n раз, где n - количество доступных магазинов, продающих этот продукт.
Я хотел использовать поиск фасеток, чтобы отфильтровать, какиеМагазин, в котором я хотел искать, но я столкнулся с проблемой:
Я начинаю индексацию и ищу «foobar», не сталкиваясь с поиском.Я получаю список таких аспектов:
<lst name="facet_fields">
<lst name="type">
<int name="productA">10</int>
<int>0</int>
</lst>
Это число растет и растет (что является нормальным) до завершения индексации хранилища А.Затем я начинаю индексацию хранилища B и получаю такой результат при запросе к solr
<lst name="facet_fields">
<lst name="type">
<int name="productA">303</int>
<int name="productB">6</int>
<int>0</int>
</lst>
, но через некоторое время solr приходит в ярость и отправляет мне такой результат:
<lst name="facet_fields">
<lst name="type">
<int name="productB">320</int>
</lst>
Да,У меня даже нет подсчета фасетов для productA
, и я даже не могу найти его!Это принесет 0 результатов.
У вас есть представление о том, что происходит?Не правильно ли использовать фасет для такого рода проблем?