创建MoreLikeThis查询会产生空查询和术语

时间:2016-11-23 16:54:00

标签: lucene lucene.net

我试图获得另一个类似的文档。我正在使用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

所以问题是:  为什么没有条款/为什么没有生成查询?

我希望看到重要的事情,如果没有,请帮助我更好地提出我的第一个问题:)

1 个答案:

答案 0 :(得分:1)

我得到了它的工作。

问题是,我在假目录上工作。 我有不同的解决方案来创建索引和创建查询,并与索引位置进行了不匹配。

所以通用的解决方案是: 您的Querygenerating-Class是否已完全初始化? (MinDocFreq,MinTermFreq,MinWordLen,有一个Analyzer,设置fieldNames)

您使用的IndexReader是否已正确初始化?