Apache Solr中的外部文件字段

时间:2011-05-16 10:14:23

标签: solr

我一直在尝试在ApacheSolr中使用ExternalFileField进行外部评分。

我正在使用示例配置。基本上我想用他们的ID设置项目的分数。

我在schema.xml中设置了fieldType idRankFile和field idRank:

<fieldType name="idRankFile" keyField="id" defVal="0" stored="true" indexed="true" class="solr.ExternalFileField" valType="pfloat" />
<field name="idRank" type="idRankFile" indexed="true" stored="true" />

在/ solr / example / solr / data中创建了一个名为external_idRank的文件,其中包含以下内容:

F8V7067-APL-KIT = 1.0
IW-02 = 10.0
9885A004 = 100.0
SOLR1000 = 1000.0

(这为各种id分配idRank值)

现在我运行以下查询:

http://localhost:8983/solr/select/?indent=on&q=car%20power%20adapter%20_val_:%22product(idRank,1)%22&fl=name,id

这应该基本上按照idRanks的顺序返回结果。但事实并非如此。

有什么想法吗?

1 个答案:

答案 0 :(得分:2)

好吧,所以我遇到了同样的问题。这就是我所做的:

  1. 创建文件:
    solr_home/PROJECT/multicore/core1/data/external_popularProducts.txt

    该文件应包含如下值:
    uniqueID_in_core=count

    例:
     873728721=19
     842728342=20

  2. 更新schema.xml,在<types> </types>下添加 <fieldType name="popularProductsFile" keyField="key" defVal="0" stored="true" indexed="true" class="solr.ExternalFileField" valType="float" />

    此处,key是solr core的primaryID的列名 在<fields></fields>下添加此内容 <field name="popularProducts" type="popularProductsFile" indexed="true" stored="true" />

  3. 重新加载核心。我正在使用solr4.3,它有一个bug。当我尝试重新加载任何核心时,solrcloud节点会关闭。 SOLR-4805: SolrCloud - RELOAD on collections or cores leaves collection offline and unusable till restart 。所以,我不得不重启我的solrcloud节点。

  4. 查询: http://SOLR_NODE:8983/solr/core1/select?q=ipad&sort=popularProducts desc

  5. 注意:
    大多数关于ExternalFileField的博客都不完全准确。所以请参阅原始文档:

    1. http://lucene.apache.org/solr/4_3_1/solr-core/org/apache/solr/schema/ExternalFileField.html
    2. http://docs.lucidworks.com/display/solr/Working+with+External+Files+and+Processes
    3. 如果您发现任何问题,请改进此答案。