我一直在尝试将 Solr 配置为使用 Oracle 11.2 数据库作为数据源,但无效。我已经彻底探讨了这些文件,似乎缺乏一份好的工作指南。
对于一个简单的场景,我想索引我的单个表[topic]
我的表 主题 的结构如下所示:
- ID(自动编号)
- 主题(varchar 50) 我想将此作为索引
- 信息(varchar 255) 我想将此作为索引
我的solr配置(到目前为止)
我为此Oracle添加了一个新集合,将其命名为 " oracle_test" 。因此,我按照此集合的官方文档指导配置文件夹结构,如下所示:
数据-config.xml中
我已经为我的Oracle配置了一个工作数据源连接字符串,指定了我的 主题 表的查询,以及我希望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
导入数据源使用&#34; DataImport&#34;在Solr Admin仪表板上,一旦执行命令,我得到了这个回复,我不确定它是否正确索引了我的Oracle表:
{
"responseHeader": {
"status": 0,
"QTime": 1
},
"initArgs": [
"defaults",
[
"config",
"data-config.xml"
]
],
"command": "status",
"status": "idle",
"importResponse": "",
"statusMessages": {}
}
奇怪的是,状态表示为&#34;空闲&#34;。
我尝试执行搜索查询,但返回错误
使用搜索查询&#34; test&#34;如下:
$> curl http://localhost:8983/solr/oracle_test/select?q=test&wt=json&indent=true
Solr返回我&#34;未定义的字段主题&#34;。
{
"responseHeader": {
"status": 400,
"QTime": 1,
"params": {
"q": "called",
"indent": "true",
"wt": "json",
"_": "1434341618019"
}
},
"error": {
"msg": "undefined field topic",
"code": 400
}
}
但是,如前面部分所示,显然我已经定义了字段&#34; topic&#34;在我的schema.xml中。 Solr官方网站似乎缺乏文档或指南,我尝试在互联网上做一些研究,但我一点都没有。
任何可能熟悉Solr - Oracle集成的人都可以帮我解决这个问题吗?有什么建议吗?
答案 0 :(得分: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>
答案 1 :(得分:0)
您使用的方法似乎没问题。在solrConfig.xml中尝试使用下面的行
<str name="config">/path/to/my/DIHconfigfile.xml</str>
而不是<str name="df">topic</str>