Эй, ребята, я новичок в Solr и хочу выполнить следующий сценарий (ниже), но не уверен, что Solr способен обрабатывать подобные случаи:
Проблема очень прямая, я хочу построить поиск по сравнению цен. Вот мои рациональные таблицы БД:
t_company:
company_id
company_name
t_product:
product_id
product_price
t_company_product:
company_product_id
company_id
product_id
В Solr я хочу выполнить следующий поиск - получить все компании, которые предлагают 1 или несколько конкретных продуктов по самой низкой ВСЕГО цене (поэтому, если вы выбираете винты, гвозди и листовой камень, я хочу сделать общую покупку самая низкая цена).
Когда я настраивал свою схему, я определял бизнес как основной объект, а product_ids и product_prices - как два многозначных поля.
Могу ли я сделать такой запрос? Как бы я сделал сумму?
Вот все мои XML schema.xml и data-config.xml
<document name="companies">
<entity name="company" dataSource="dsCompany"
query="select
newid() as row_id,
company_id,
company_name
from
t_company WITH (NOLOCK)">
<field column="row_id" name="row_id" />
<field column="company_id" name="company_id" />
<field column="company_name" name="company_name" />
<entity name="products" query="select
company_product_id,
product_id,
price
from
t_company_product WITH (NOLOCK)
where
company_id='${company.company_id}'"
dataSource="dsCompany">
<field name="company_product_id" column="company_product_id" />
<field name="product_id" column="product_id" />
<field name="price" column="price" />
</entity>
</entity>
<fields>
<field name="row_id" type="string" indexed="true" stored="true" required="true"/>
<field name="company_id" type="integer" indexed="true" stored="true" required="true" />
<field name="company_name" type="text" indexed="true" stored="true"/>
<field name="service_id" type="integer" indexed="true" stored="true" required="true" />
<field name="price" type="tfloat" indexed="true" stored="true" required="true" />
</fields>
Любая обратная связь будет принята с благодарностью !!!