Lucene 创建一个更相似的查询将生成空查询和术语

Lucene 创建一个更相似的查询将生成空查询和术语,lucene,lucene.net,Lucene,Lucene.net,我正试图得到另一份类似的文件。我正在使用Lucene.Net来实现这个目标。为此,我将文档分为多个字段-标题和内容。现在,在没有有趣术语的空查询中创建实际查询结果 我的眼睛看起来像这样: var queries = new List<Query>(); foreach(var docField in docFields) var similarSearch = new MoreLikeThis(indexReader); similarSearch.SetFieldNam

我正试图得到另一份类似的文件。我正在使用Lucene.Net来实现这个目标。为此,我将文档分为多个字段-标题和内容。现在,在没有有趣术语的空查询中创建实际查询结果

我的眼睛看起来像这样:

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
var querys=newlist();
foreach(docFields中的var docField)
var similarSearch=新的MoreLikeThis(indexReader);
similarSearch.setFieldName(docField.fieldName);
similarSearch.Analyzer=新的GermanAnalyzer(Version.LUCENE_30,新的哈希集(StopWords));
similarSearch.MinDocFreq=1;
similarSearch.MinTermFreq=1;
similarSearch.MinWordLen=1;
similarSearch.Boost=true;
similarSearch.BoostFactor=BoostFactor;
使用(var reader=newstringreader(docField.Content)){
var searchQuery=similarSearch.Like(reader);
//调试目的
var queryString=searchQuery.ToString();//为空
var terms=similarSearch.RetrieveInterestingTerms(读取器);//也为空
添加(searchQuery);
}
var booleanQuery=new booleanQuery();
foreach(查询中的var moreLikeThisQuery)
{
booleanQuery.Add(moreLikeThisQuery,occurrent.SHOULD);
}
var topDocs=indexSearcher.Search(booleanQuery,maxNumberOfResults);//当然没有结果
因此,问题是: 为什么没有术语/为什么没有生成查询?

我希望重要的事情被看到,如果没有,请帮助我把我的第一个问题做得更好:)

我把它做好了

问题是,我处理的是假目录。 对于创建索引和创建查询,我有不同的解决方案,但与索引位置不匹配

因此,总体解决方案是: 查询生成类是否已完全初始化?(MinDocFreq、MinTermFreq、MinWordLen有一个分析器,设置字段名)

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