1

我配置了我的外部文件字段配置,如下所示:

    < field name="idRank" type="idRankFile" indexed="true" stored="true" omitNorms="true" omitTermFreqAndPositions="true" valType="pfloat" />

    < fieldType name="idRankFile" keyField="id" defVal="10" stored="true" indexed="true" class="solr.ExternalFileField" valType="pfloat|float|tfloat" />

以下是我保存在名为 :external_idRank.txt 的文件中的值。这里的键是文档中 size 字段的值。

2938025 = 100.0 

4030380 = 115.0

9751 = 125.0

12738 = 135.0 

9752 = 145.0

我使用以下查询来检索结果,并根据idRank值对其进行排序:

/solr/collection1/select/?&q=content:* _ val _:"sum(idRank,1)"&fl=size&rows=100

但是,当我使用以下查询时,它会抛出如下异常,

java.lang.NullPointerException at org.apache.solr.search.function.FileFloatSource.getFloats(FileFloatSource.java:273) at org.apache.solr.search.function.FileFloatSource.access$000(FileFloatSource.java:51) at org .apache.solr.search.function.FileFloatSource$2.createValue(FileFloatSource.java:147) 在 org.apache.solr.search.function.FileFloatSource$Cache.get(FileFloatSource.java:190) 在 org.apache.solr。 search.function.FileFloatSource.getCachedFloats(FileFloatSource.java:141) 在 org.apache.solr.search.function.FileFloatSource.getValues(FileFloatSource.java:84) 在 org.apache.lucene.queries.function.valuesource.MultiFloatFunction。 getValues(MultiFloatFunction.java:65) 在 org.apache.lucene.queries.function.FunctionQuery$AllScorer.(FunctionQuery.java:120) 在 org.apache.lucene.queries.function。FunctionQuery$FunctionWeight.scorer(FunctionQuery.java:95) at org.apache.lucene.search.BooleanQuery$BooleanWeight.scorer(BooleanQuery.java:323) at

我应该怎么做才能毫无例外地执行这个查询?

4

1 回答 1

1

而不是您的文件内容是:

2938025 = 100.0

4030380 = 115.0

9751 = 125.0

12738 = 135.0

9752 = 145.0

尝试完全按照https://lucene.apache.org/solr/api-4_0_0-BETA/org/apache/solr/schema/ExternalFileField.html中指定的方式保存文件,例如:

2938025=100.0
4030380=115.0
9751=125.0
12738=135.0
9752=145.0

还可以尝试将您的 fieldType 定义更改为:

<fieldType name="idRankFile" keyField="id" defVal="10" class="solr.ExternalFileField" valType="float" />

请注意,这indexedstored外部文件字段没有意义。

于 2013-03-21T22:56:39.803 回答