Solr 4.3.0外部文件字段:尽管我遵循官方参考,但我无法使其工作

时间:2014-04-28 22:30:28

标签: solr

我有一个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我希望将此值视为字符串,但我不知道在哪里设置此配置。

有什么想法吗?

1 个答案:

答案 0 :(得分:0)

好的,我发现了问题所在。我在日志文件中查看了蚂蚁这里的内容

引起:org.apache.solr.common.SolrException:目前只支持float和pfloat(Trie | Float)字段作为外部字段类型。

所以,我不能将字符串用作外部值。