1

我将为 Solr 实现一个搜索组件,以使用更像这个有趣的术语来返回文档主要关键字。通过 lucene docID 使用 mlt.retrieveInterestingTerms 的已实现组件的主要部分不适用于所有文档。我的意思是对于一些文档,solr funnyterms 返回一些有用的术语作为顶级 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了我将用于生成有趣术语的所有必填字段(相应方法中的字段数组)

4

0 回答 0