我试图获得另一个类似的文档。我正在使用Lucene.Net MoreLikeThis-Class来实现这一目标。为此,我将我的文档分成多个字段 - 标题和内容。现在创建实际查询会产生一个没有有趣术语的空查询。
我看起来像这样:
var queries = new List<Query>();
foreach(var docField in docFields)
var similarSearch = new MoreLikeThis(indexReader);
similarSearch.SetFieldNames(docField.fieldName);
similarSearch.Analyzer = new GermanAnalyzer(Version.LUCENE_30, new HashSet<string>(StopWords));
similarSearch.MinDocFreq = 1;
similarSearch.MinTermFreq = 1;
similarSearch.MinWordLen = 1;
similarSearch.Boost = true;
similarSearch.BoostFactor = boostFactor;
using(var reader = new StringReader(docField.Content)){
var searchQuery = similarSearch.Like(reader);
// debugging purpose
var queryString = searchQuery.ToString(); // empty
var terms = similarSearch.RetrieveInterestingTerms(reader); // also empty
queries.Add(searchQuery);
}
var booleanQuery = new BooleanQuery();
foreach(var moreLikeThisQuery in queries)
{
booleanQuery.Add(moreLikeThisQuery, Occur.SHOULD);
}
var topDocs = indexSearcher.Search(booleanQuery, maxNumberOfResults); // and of course no results obtained
所以问题是: 为什么没有条款/为什么没有生成查询?
我希望看到重要的事情,如果没有,请帮助我更好地提出我的第一个问题:)
答案 0 :(得分:1)
我得到了它的工作。
问题是,我在假目录上工作。 我有不同的解决方案来创建索引和创建查询,并与索引位置进行了不匹配。
所以通用的解决方案是: 您的Querygenerating-Class是否已完全初始化? (MinDocFreq,MinTermFreq,MinWordLen,有一个Analyzer,设置fieldNames)
您使用的IndexReader是否已正确初始化?