【发布时间】:2014-04-28 22:30:27
【问题描述】:
我有一个 Solr 多核实例,我正在尝试利用外部文件字段功能,但没有成功。
这是 fieldType 定义
<fieldType name="ext_tags" class="solr.ExternalFileField" keyField="doc_id" />
请注意参考指南报告了一个包含更多属性的示例
defVal="" stored="false" indexed="false" valType="string"
但我猜它们来自 Solr 版本 3,因为如果我将它们添加到我的 schema.xml 中,我会在启动实例时遇到错误。
这是字段的定义
<field name="deal_tags" type="ext_tags" indexed="false" stored="true" required="false" />
这是外部数据文件名(在 $SOLR_HOME/data 中)
external_deal_tags.txt
这是实例目录 ($SOLR_HOME)
/opt/solr-4.3.0/deal-ws/cores/it_IT/
这是数据文件的摘录(UTF-8 编码,按 MD5 哈希的 doc_id 排序)
003c9256f23da49233fc0b253f7a93cb=8;12
0050188629a8c0e3f89bcd6a7cb77b3a=6;7;13;33;35;38
009c3932933b173072054e3d81527b05=6
这是我调用的网址
http://localhost:8080/solr/it_IT/select?q=*:*&wt=json&fl=deal_tags&rows=3&indent=yes
这是我得到的回复
{
"responseHeader":{
"status":0,
"QTime":116},
"response":{"numFound":3678,"start":0,"docs":[
{},
{},
{}]
}}
即使我将 rows 参数更改为 4000(我在索引中有 3678 个文档),我也没有得到 ext_tags
修改schema.xml文件后,多次重启Tomcat,也重启了宿主机。
我错过了什么?
* 更新 *
在寻找答案的过程中,我发现问题可能出在我查询 Solr 的方式上。我尝试使用 field()
修改查询http://localhost:8080/solr/it_IT/select?q=*:*&wt=json&fl=field(deal_tags)&rows=3&indent=yes
这就是我现在得到的
{
"responseHeader":{
"status":0,
"QTime":2},
"response":{"numFound":3678,"start":0,"docs":[
{ "field(deal_tags)":0.0},
{ "field(deal_tags)":0.0},
{ "field(deal_tags)":8.0}]
}}
我希望得到 strings,而不是得到格式化为十进制数的内容:
- 第一个结果:预期 56;57 -> 0.0
- 第二个结果:预期为空白 -> 0.0(其 doc_id 不在外部文件中)
- 第三个结果:预期 8 -> 8.0
所以,看来我需要通知 Solr 我希望这个值被视为 字符串,但我不知道在哪里设置这个配置。
有什么想法吗?
【问题讨论】:
标签: solr