Solr MLT Interestingterms返回的术语不同于Lucene MoreLikeThis

时间:2015-07-26 10:47:16

标签: java solr lucene morelikethis

我将为Solr实现一个searchcomponent来返回文档主要关键字,使用更像这个有趣的术语。通过lucene docID使用mlt.retrieveInterestingTerms的已实现组件的主要部分不适用于所有文档。我的意思是对于一些文档solr interestingterms返回一些有用的术语作为顶级tf-idf术语;但是,实现的方法返回null!但对于其他文档,两个结果(solr MLT有趣的术语和mlt.retrieveInterestingTerms(docId))是相同的! 你能帮我解决这个问题吗?

public List<String> getKeywords(int docId) throws SyntaxError {
    String[] fields = new String[keywordSourceFields.size()];
    List<String> terms = new ArrayList<String>();
    fields = keywordSourceFields.toArray(fields);
    mlt.setFieldNames(fields);
    mlt.setAnalyzer(indexSearcher.getSchema().getIndexAnalyzer());
    mlt.setMinTermFreq(minTermFreq);
    mlt.setMinDocFreq(minDocFreq);
    mlt.setMinWordLen(minWordLen);
    mlt.setMaxQueryTerms(maxNumKeywords);
    mlt.setMaxNumTokensParsed(maxTokensParsed);
    try {

      terms = Arrays.asList(mlt.retrieveInterestingTerms(docId));
    } catch (IOException e) {
      LOGGER.error(e.getMessage());
      throw new RuntimeException();
    }

    return terms;
  }

注意:

我为所有必需的字段定义了termVectors=true,我将用它来生成有趣的术语(相应方法中的字段数组)

0 个答案:

没有答案