java - Solr数据配置中如何从多表中获取数据

标签 java mysql solr lucene spring-data

我正在使用 Spring-Data-Solr,我有三个表并尝试从这些表中获取所有数据。这是表的关系:

汽车表:

      ID, NAME, PRICE, DISTRICT_ID(FK), CITY_ID(FK)

地区表:

      ID(PK), DISTRICT_NAME

城市表:

      ID(PK), CITY_NAME

在 data-config.xml 中,我尝试使用以下 sql 获取 Car 表中的所有数据和记录:

<dataConfig>
<dataSource driver="org.hsqldb.jdbcDriver" url="jdbc:hsqldb:/temp/example/ex" user="sa" />
<document>
    <entity name="city" query="select * from city">
        <field column="id" name="city_id" />
        <field column="name" name="city_name" />

        <entity name="cars" query="select * from cars where city_id='${city.id}'">
                <field column="id" name="id" />
                <field column="name" name="name" />
            <entity name="district" query="select * from district where id = '${cars.district_id}'">
                <field column="id" name="district_id" />
                <field column="name" name="district_name" />
            </entity>
        </entity>
    </entity>
</document>

当我在 Solr Admin 上执行时,我刚刚收到 2 条记录,尽管我的汽车表中有 11 条记录。

如何获取Car表中的全部(11条记录)?谢谢

最佳答案

<dataConfig>
<dataSource driver="org.hsqldb.jdbcDriver"  url="jdbc:hsqldb:/temp/example/ex" user="sa" />
<document>
<entity name="city" query="select City.city_id ,City.city_name ,car.id ,car.name ,District.id  from Car join City on city.id = car.CITY_ID join District on car.DISTRICT_ID = District.id ">
    <field column="cityid" name="City.city_id" />
    <field column="cityname" name="City.city_name" />
    <field column="carid" name="car.id" />
    <field column="carname" name="car.name" />
    <field column="Districtid" name="District.id" />
    <etc... any column you need>


</entity>
</document>

编辑

或者您可以在 View [TempView]中进行查询 AND 配置将是

<entity name="city" query="select * from TempView ">
    <field column="cityid" name="City.city_id" />
    <field column="cityname" name="City.city_name" />
    <field column="carid" name="car.id" />
    <field column="carname" name="car.name" />
    <field column="Districtid" name="District.id" />
    <etc... any column you need>


</entity>
</document> 

关于java - Solr数据配置中如何从多表中获取数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42482183/

相关文章:

solr - Solr 复制和 Solr 云有什么区别?

lucene - 在不指定字段名称的情况下查询 Solr

java - 我如何在java中停止我的服务器

mysql - 将 MSSQL 表转换为 MySQL 表

java - 如何在 Struts Action 类中将变量从一个方法传递到另一个方法?

php - 如何在一个查询中更新两个表?

mysql - 通过终端查看 MySQL 数据库使用什么存储引擎

Solr 不搜索(非常基本的例子)

Java 获取查询字符串

java - 如何使用数组列表进行排列