【问题标题】:How could I properly configure Solr to index my Oracle database?如何正确配置 Solr 以索引我的 Oracle 数据库?
【发布时间】:2015-06-15 04:19:40
【问题描述】:

我一直在尝试将 Solr 配置为将我的 Oracle 11.2 数据库用作数据源,但没有任何效果。我已经彻底研究了文档,但似乎缺乏一个好的工作指南。


对于一个简单的场景,我想索引我的单个表 [topic]

我的表topic的结构如下图:

  • ID(自动编号)
  • 主题(varchar 50)我想索引这个
  • 信息(varchar 255)我想索引这个

我的 solr 配置(到目前为止)

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

  • ~/solr/server/solr/
    • oracle_test
      • 配置
        • data-config.xml
        • 提升.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 部分下,我只有一个默认字段类型定义为字符串:

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

然后我尝试通过 Solr Admin 导入数据源

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

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

奇怪的是,状态显示为“空闲”。


我尝试执行搜索查询,但返回错误

如下使用搜索查询“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 中定义了“主题”字段。 Solr 官方网站上似乎缺乏文档或指南,我尝试在 Internet 上进行一些研究,但我一无所获。

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

【问题讨论】:

    标签: oracle solr lucene


    【解决方案1】:

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

    它有形式错误,这些错误会阻止索引启动,进而阻止您定义的 DIH 运行

    • 您的字段类型周围缺少&lt;types /&gt;
    • 您的字段周围缺少&lt;fields /&gt;
    • &lt;defaultSearchField /&gt; 在您的字段中丢失
    • 您已经定义了两次名为 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>
    

    【讨论】:

    • 谢谢。我已经相应地快速更正了schema.xml 的结构。但是,显示“未定义字段主题”的错误 400 仍然存在。令我好奇的是,在DataImport 部分,我总是看到状态显示为No information available (idle)。这是否意味着任何可能的原因?
    • 我刚刚在启动时注意到 Solr 日志中的这一行:“架构已升级为托管,但非托管架构 schema.xml 仍可加载。请删除这个文件。"
    • 看起来您正在使用 5.X 版的 Solr,并且您有基本的配置问题。抱歉,在您运行数据导入之前有太多移动部件。请查看随 Solr 发行版提供的示例。您将在 solr-5.2.0\example\example-DIH 中找到一个 DIH 示例
    【解决方案2】:

    您使用的方法似乎没问题。在 solrConfig.xml 中尝试使用以下行

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

    而不是&lt;str name="df"&gt;topic&lt;/str&gt;

    【讨论】:

      猜你喜欢
      • 2010-12-10
      • 2011-06-30
      • 2013-03-18
      • 2010-12-10
      • 1970-01-01
      • 1970-01-01
      • 2014-10-22
      • 1970-01-01
      • 2016-10-08
      相关资源
      最近更新 更多