我一直在尝试配置 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 回答
我认为您的Solr服务器应该在启动时或者您尝试访问使用已定义的schema.xml的索引时生成错误 . 请查看solr服务器的日志 .
它有正式错误,这些会阻止索引启动,反过来又会阻止你从运行中定义的DIH
您的字段类型周围缺少
<types />
您的字段周围缺少
<fields />
<defaultSearchField />
错过了你的字段您已经定义了名为
topic
的字段两次schema.xml is documented in Solr's Wiki的结构 . schema.xml的有效版本如下所示 .
你正在使用的方法似乎很好 . 在solrConfig.xml中尝试使用下面的行
而不是
<str name="df">topic</str>