首页 文章

我怎样才能正确配置Solr来索引我的Oracle数据库?

提问于
浏览
0

我一直在尝试配置 Solr 以使用我的 Oracle 11.2 数据库作为数据源,但没有任何作用 . 我已经彻底探索了这些文件,似乎缺乏一份好的工作指南 .


For a simple scenario, I want to index my single table [topic]

我的表 topic 的结构如下所示:

ID(自动编号)主题(varchar 50)我想索引此Info(varchar 255)我想索引这个


My solr configurations (so far)

我为此Oracle添加了一个新集合,将其命名为 "oracle_test" . 因此,我按照此集合的官方文档指导配置文件夹结构,如下所示:

  • ~ / solr / server / solr /

  • oracle_test

  • conf

  • data-config.xml

  • elevate.xml

  • schema.xml

  • solrconfig.xml

data-config.xml

我已经为我的Oracle配置了一个工作数据源连接字符串,指定了我的 topic 表的查询,以及我希望Solr查找的字段 .

<dataConfig>
    <dataSource name="jdbc" driver="oracle.jdbc.driver.OracleDriver" url="jdbc:oracle:system@//127.0.0.1:1521/orcl/" user="system" password="*****"/>
    <document>
        <entity name="help" query="select \"topic\",\"info\" from \"topic\"" dataSource="jdbc">
            <field column="topic" name="topic"/>
            <field column="info" name="info"/>
        </entity>
    </document>
</dataConfig>

schema.xml

我把字段的定义放在这里 .

<schema name="oracle_help" version="1.1">
    <fieldType name="string" class="solr.StrField"/>
    <field name="topic" type="string" indexed="true" stored="true" multiValued="false"/>
    <defaultSearchField>info</defaultSearchField>
    <field name="topic" type="string" indexed="true" stored="true"/>
    <field name="info" type="string" indexed="true" stored="true"/>
</schema>

solrconfig.xml

由于配置文件很大并且包含所有内容 . 我将仅从该配置文件中摘录一些与Oracle配置相关的摘录,如下所示:

我指定了我希望它索引的字段(主题):

<initParams path="/update/**,/query,/select,/tvrh,/elevate,/spell,/browse">
    <lst name="defaults">
       <str name="df">topic</str>
    </lst>
</initParams>

在处理器部分下,我只有一个默认字段类型定义为字符串:

<processor class="solr.AddSchemaFieldsUpdateProcessorFactory">
  <str name="defaultFieldType">strings</str>
  ...
</processor>

Then I tried importing the datasource via Solr Admin

在Solr Admin仪表板上使用“DataImport”,一旦执行命令,我得到了这个回复,我不确定它是否正确索引我的Oracle表:

{
    "responseHeader": {
    "status": 0,
    "QTime": 1
},
"initArgs": [
    "defaults",
    [
        "config",
        "data-config.xml"
    ]
],
"command": "status",
"status": "idle",
"importResponse": "",
"statusMessages": {}
}

奇怪的是,状态表示为“空闲” .


I tried to execute search query, but it returns error

使用搜索查询“test”如下:

$> curl http://localhost:8983/solr/oracle_test/select?q=test&wt=json&indent=true

Solr返回“未定义的字段主题” .

{
    "responseHeader": {
    "status": 400,
    "QTime": 1,
    "params": {
        "q": "called",
        "indent": "true",
        "wt": "json",
        "_": "1434341618019"
    }
},
"error": {
   "msg": "undefined field topic",
   "code": 400
  }
}

但是,如前面部分所示,显然我已经在schema.xml中定义了字段“topic” . Solr官方网站上似乎缺乏文档或指南,我尝试在互联网上做一些研究,但我什么都没有 .

任何可能熟悉Solr - Oracle集成的人都可以帮我解决这个问题吗?有什么建议吗?

2 回答

  • 0

    我认为您的Solr服务器应该在启动时或者您尝试访问使用已定义的schema.xml的索引时生成错误 . 请查看solr服务器的日志 .

    它有正式错误,这些会阻止索引启动,反过来又会阻止你从运行中定义的DIH

    您的字段类型周围缺少

    • <types />
      您的字段周围缺少

    • <fields />

    • <defaultSearchField /> 错过了你的字段

    • 您已经定义了名为 topic 的字段两次

    schema.xml is documented in Solr's Wiki的结构 . schema.xml的有效版本如下所示 .

    <schema name="oracle_help" version="1.1">
      <types>
        <fieldType name="string" class="solr.StrField"/>
      </types>
    
      <defaultSearchField>info</defaultSearchField>
    
      <fields>
        <field name="topic" type="string" indexed="true" stored="true" multiValued="false"/>
        <field name="info" type="string" indexed="true" stored="true"/>
      </fields>
    </schema>
    
  • 0

    你正在使用的方法似乎很好 . 在solrConfig.xml中尝试使用下面的行

    <str name="config">/path/to/my/DIHconfigfile.xml</str>
    

    而不是 <str name="df">topic</str>

相关问题