Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/solr/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用自定义文档转换器获取solr中匹配术语的有效负载_Solr_Lucene_Zend Search Lucene_Solr5_Compass Lucene - Fatal编程技术网

使用自定义文档转换器获取solr中匹配术语的有效负载

使用自定义文档转换器获取solr中匹配术语的有效负载,solr,lucene,zend-search-lucene,solr5,compass-lucene,Solr,Lucene,Zend Search Lucene,Solr5,Compass Lucene,在Solr中,我有一个名为“有效载荷”的自定义字段类型,它支持有效载荷 <fieldtype name="payloads" stored="true" indexed="true" class="solr.TextField" > <analyzer> <tokenizer class="solr.WhitespaceTokenizerFactory"/> <filter class="com.abc.CustomPayloadTokenFilterF

在Solr中,我有一个名为“有效载荷”的自定义字段类型,它支持有效载荷

<fieldtype name="payloads" stored="true" indexed="true" class="solr.TextField" >
<analyzer>
<tokenizer class="solr.WhitespaceTokenizerFactory"/>
<filter class="com.abc.CustomPayloadTokenFilterFactory" encoder="custom"/>
<filter class="solr.PorterStemFilterFactory"/>
</analyzer>
</fieldtype>      
但是当我执行“pe.getPayload()”时,我得到的只是“null”。 关于上述代码可能出现的错误以及负载不存在的原因,是否有任何建议/指针

(注意:给出的场景非常简单,实际上文档和查询中还存在其他内容,因此请不要建议更改模式或不使用有效负载。)

<field name = "somefield" type="payloads" indexed="true" stored="true"  multiValued = "true" omitNorms="true" />
IndexReader reader = this.context.getSearcher().getIndexReader();
final TermsEnum termsEnum = MultiFields.getTerms(
    reader, this.kField).iterator();
String term = "xyz";
PostingsEnum postingsEnum = MultiFields.getTermDocsEnum(
    reader,
    "somefield",
    new BytesRef(term));

if (termsEnum.seekExact(new BytesRef(term))) {
    PostingsEnum pe = termsEnum.postings(postingsEnum, PostingsEnum.ALL);

    int nextDoc = pe.advance(docid);
    postingsEnum.advance(docid);

    if (nextDoc == docid) { 
        if (sb.length() > 0)
            sb.append(",");
        sb.append(term );
        sb.append(pe.getPayload());
    }
}