【问题标题】:Solr DIH with SQLSolr DIH 与 SQL
【发布时间】:2012-12-03 12:39:33
【问题描述】:

我正在尝试设置我的 SOLR 以从我的 SQL 文件中导入文档。我发现这个应该放在数据配置中:

<dataConfig>
  <dataSource driver="org.postgresql.Driver" url="jdbc:postgresql://localhost:5432/wikipedia" user="wikipedia" password="secret" />
  <document>
    <entity name="page" query="SELECT page_id, page_title from page">
      <field column="page_id" name="id" />
      <field column="page_title" name="name" />
      <entity name="revision" query="select rev_id from revision where rev_page=${page.page_id}">
        <entity name="pagecontent" query="select old_text from pagecontent where old_id=${revision.rev_id}">
          <field column="old_text" name="text" />
        </entity>
      </entity>
   </entity>
  </document>
</dataConfig>

就我而言,我的架构如下所示:

CREATE TABLE country (
    id integer NOT NULL PRIMARY KEY AUTO_INCREMENT,
    name varchar(255) NOT NULL
)
;

CREATE TABLE location (
    id integer NOT NULL PRIMARY KEY AUTO_INCREMENT,
    name varchar(255) NOT NULL,
    coordinate varchar(255) NOT NULL,
    country_id integer NOT NULL REFERENCES country (id)
)
;

CREATE TABLE item (
    id integer NOT NULL PRIMARY KEY AUTO_INCREMENT,
    title varchar(60) NOT NULL,
    description varchar(900) NOT NULL,
    date datetime NOT NULL,
    source varchar(255) NOT NULL,
    link varchar(255) NOT NULL,
    location_id integer NOT NULL REFERENCES location (id)
)
;

如果我想将以下字段导入 Solr:

id
title
description
date
source
link
location(name)
location(co-ordinates)

有人可以帮助我更改示例数据配置以使用我的数据。我很困惑的是何时使用“实体”以及何时使用“字段列”。

【问题讨论】:

    标签: mysql sql xml solr lucene


    【解决方案1】:

    您可以通过两种方式进行操作,例如:-

    在项目和位置之间创建一个简单的 SQL 查询

    <document name="items">
        <entity name="item" query="SELECT A.ID, A.TITLE, A.DESCRIPTION, A.DATE, A.SOURCE, B.COORDINATE , C.NAME FROM ITEM A, LOCATION B, COUNTRY C WHERE A.LOCATION_ID = B.ID AND B.COUNTRY_ID = C.ID">
            <field column="ID" name="id" />
            <field column="TITLE" name="title" />
            <field column="DESCRIPTION" name="description" />
            <field column="DATE" name="date" />
            <field column="SOURCE" name="source" />
            <field column="COORDINATE" name="coordinate" />     
    
        </entity>
    </document>
    

    使用subentities :-

    <document name="items">
        <entity name="item" query="SELECT A.ID, A.TITLE, A.DESCRIPTION, A.DATE, A.SOURCE, B.COORDINATE , C.NAME FROM ITEM A, LOCATION B, COUNTRY C WHERE A.LOCATION_ID = B.ID AND B.COUNTRY_ID = C.ID">
            <field column="ID" name="id" />
            <field column="TITLE" name="title" />
            <field column="description" name="description" />
            <field column="DATE" name="date" />
            <field column="SOURCE" name="source" />
    
            <entity name="location" query="select coordinate from location where id='${item.ID}'">
                <field name="coordinate" column="coordinate" />
            </entity>
    
        </entity>
    </document>
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-04-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-02-20
      相关资源
      最近更新 更多