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