Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ionic-framework/2.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
Lucene有效载荷计分_Lucene_Payload - Fatal编程技术网

Lucene有效载荷计分

Lucene有效载荷计分,lucene,payload,Lucene,Payload,我想弄清楚有效负载评分在lucene中是如何工作的。因为我不明白PayloadFunction在哪里,我想我真的不明白它是如何工作的。我试着在谷歌上搜索,但除了建议之外,找不到更多的信息。嗯,如果有人能在这里解释一下就好了,否则源代码就是:)它有三个部分。首先,您应该在分析期间生成有效负载。这可以使用PayloadAttribute完成。您只需要在分析期间将此属性添加到所需的术语中 class MyFilter extends TokenFilter { private PayloadAt

我想弄清楚有效负载评分在lucene中是如何工作的。因为我不明白PayloadFunction在哪里,我想我真的不明白它是如何工作的。我试着在谷歌上搜索,但除了建议之外,找不到更多的信息。嗯,如果有人能在这里解释一下就好了,否则源代码就是:)

它有三个部分。首先,您应该在分析期间生成有效负载。这可以使用
PayloadAttribute
完成。您只需要在分析期间将此属性添加到所需的术语中

class MyFilter extends TokenFilter {

  private PayloadAttribute attr;

  public MyFilter() {
    attr = addAttribute(PayloadAttribute.class);
  }

  public final boolean incrementToken() throws IOException {
    if (input.incrementToken()) {
      Payload p = new Payload(PayloadHelper.encodeFloat(42));
      attr.setPayload(p);
    } else {
      attr.setPayload(null);
    }
}
然后在搜索过程中,您应该使用特殊的查询类
PayloadTermQuery
。此类的行为类似于
SpanTermQuery
,但不跟踪索引中的有效负载。使用自定义
相似性
实现,您可以对文档中出现的每个有效负载进行评分

public class MySimilarity extends DefaultSimilarity {

  public float scorePayload(int docID, String fieldName,
                            int start, int end, byte[] payload,
                            int offset, int length) {
    if (payload != null) {
      return PayloadHelper.decodeFloat(payload, offset);
    } else {
      return 1.0f;
    }
  }
}
最后,使用
PayloadFunction
可以对文档的有效负载分数进行聚合,以生成最终的文档分数