【发布时间】: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
- 配置
- oracle_test
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 集成的人都可以帮我解决这个问题吗?有什么建议吗?
【问题讨论】: