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
Java Solr MLT Interestingterms返回的术语与Lucene返回的术语不同_Java_Solr_Lucene_Morelikethis - Fatal编程技术网

Java Solr MLT Interestingterms返回的术语与Lucene返回的术语不同

Java Solr MLT Interestingterms返回的术语与Lucene返回的术语不同,java,solr,lucene,morelikethis,Java,Solr,Lucene,Morelikethis,我将为Solr实现一个searchcomponent,使用更像这样有趣的术语返回文档主关键字。使用lucene docID的mlt.RetrieveInterestTerms实现的组件的主要部分并不适用于所有文档。我的意思是,对于一些文档,solr interestingterms返回一些有用的术语作为顶级tf idf术语;但是,实现的方法返回null!但是对于其他文档,两个结果(solr-MLT-interest-terms和MLT.retrieveInterestingTerms(docId

我将为Solr实现一个searchcomponent,使用更像这样有趣的术语返回文档主关键字。使用lucene docID的mlt.RetrieveInterestTerms实现的组件的主要部分并不适用于所有文档。我的意思是,对于一些文档,solr interestingterms返回一些有用的术语作为顶级tf idf术语;但是,实现的方法返回null!但是对于其他文档,两个结果(solr-MLT-interest-terms和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;
  }
public List getKeywords(int docId)抛出语法错误{
String[]fields=新字符串[keywordSourceFields.size()];
列表项=新的ArrayList();
字段=关键字SourceFields.toArray(字段);
mlt.SetFieldName(字段);
setAnalyzer(indexSearcher.getSchema().getIndexAnalyzer());
mlt.setMinTermFreq(minTermFreq);
mlt.setMinDocFreq(minDocFreq);
mlt.setMinWordLen(minWordLen);
mlt.setMaxQueryTerms(maxNumKeywords);
mlt.setMaxNumTokensParsed(maxTokensParsed);
试一试{
terms=Arrays.asList(mlt.retrieveInterestingTerms(docId));
}捕获(IOE异常){
LOGGER.error(例如getMessage());
抛出新的RuntimeException();
}
退货条款;
}
注意:

我确实为生成感兴趣的术语(对应方法中的字段数组)所需的所有字段定义了
termVectors=true