我有一个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编码,按doc_id排序,是MD5哈希)
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":[
{},
{},
{}]
}}
即使我将行 param更改为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}]
}}
我希望得到字符串而不是格式化为十进制数字的东西:
- 第一个结果:预期56; 57 - &gt; 0.0
- 第二个结果:预期空白 - &gt; 0.0(其doc_id不在外部文件中)
- 第三个结果:预期8 - &gt; 8.0
所以,似乎我需要告知Solr我希望将此值视为字符串,但我不知道在哪里设置此配置。
有什么想法吗?
答案 0 :(得分:0)
好的,我发现了问题所在。我在日志文件中查看了蚂蚁这里的内容
引起:org.apache.solr.common.SolrException:目前只支持float和pfloat(Trie | Float)字段作为外部字段类型。
所以,我不能将字符串用作外部值。