Bezdepbonusu7Программирование: статьи и ответы

Вопрос

Создание документов в SOLR..?

Автор вопроса: Ramandeep SinghОтветов: 1

я новичок в Apache SOLR..n я изучаю, как создавать документы в SOLR..


Мой сценарий: в моей базе данных RDBMS у меня есть следующий сценарий:

Таблица "cars" "jc_cars": id, name, extra

Таблица "атрибутов" "jc_attributes": id, attributeName

Таблица "многие ко многим" между атрибутом и автомобилями: "jc_car_attributes": carID, attributeID, значение

Таблица "статей": jc_articles: id, title, description

Таблица многие ко многим между Article и Cars : "jc_car_articles": articleID, carID

Теперь то, что я хочу:

  • Поиск всех автомобилей по их атрибутам (например, цене)
  • Поиск всех статей, связанных с этим автомобилем

На самом деле мне нужны результаты, когда я делаю следующий запрос:

  • Автомобили с ценой менее 400000 : необходимо предоставить информацию об автомобиле и соответствующие статьи.
  • Hyundai Accent: должен предоставить информацию об автомобиле и связанные статьи
  • и так далее.....

Итак, как мне создать соответствующий документ и Schema.xml..??

documentschemafull-text-searchsolr

Ответы

Ответ 1 · рейтинг 1 · beerbajay

Solr имеет плоский индекс, поэтому у вас не может быть списка отношений с несколькими значениями (например, отношение с именем и значением, например ваши атрибуты).

Для статей вы можете указать идентификаторы связанных статей в многозначном поле, а затем выполнить отдельный поиск для них либо (а) в своей базе данных, (б) в другом ядре solr.

Что касается атрибутов, если у вас есть фиксированный список атрибутов, вы можете соединить их с cars и прочитать каждый атрибут в отдельном поле. Если у вас нет фиксированного списка атрибутов, вам также придется прибегнуть к отдельному ядру, делая по существу обратное тому, что вы делаете для статей; выполните поиск в ядре атрибутов, а затем найдите конкретные автомобили из ядра ваших автомобилей.

Перевод вопроса и ответов сообщества Stack Overflow, лицензия CC BY-SA. Оригинал на Stack Overflow.

Похожие материалы