我正在使用SOLRNET并使用SOLR的MoreLikeThis功能来获取与返回的文档类似的文档。我的代码看起来有点像这样(在这种情况下,我正在对ID进行查找,因为我已经知道我要加载的特定文档):
var solr = ServiceLocator.Current.GetInstance<ISolrOperations<MyDocument>>();
var queryOptions = new QueryOptions()
{
MoreLikeThis = new MoreLikeThisParameters(new[] { "text" })
{
MinDocFreq = 1, // minimum document frequency
MinTermFreq = 1, // minimum term frequency
},
};
var document = solr.Query(new SolrQuery(string.Concat("id:", id)),queryOptions);
当我执行我的查询时,一切都正常工作,我的文档被检索为MyDocument类型。我可以遍历SOLRNET的SimilarResults字典,看看确实返回了类似的文档。我想知道的是,是否有一种本地方式来映射MyDocument类中的字段,以便使用MyDocument类型的集合填充它,表示返回的类似文档。
如果我必须一个接一个地遍历SimilarDocuments,那我很好,但我猜测有一种直接的方法可以做到这一点。我尝试了一些明显的技巧,比如在我的MyDocument类中使用属性进行映射
[SolrField("moreLikeThis")]
public IDictionary<string,IList<MyDocument>> SimilarResults { get; set; }
非常感谢任何帮助,
提前致谢
JP
答案 0 :(得分:3)
类似的结果不是文档的一部分,并且无论何时更新索引,实际上都可以更改。
无论如何,solr.Query返回一个ISolrQueryResults对象,而不仅仅是一个文档,因此您将在document.SimilarResults中有一个类似文档的列表,您可以将它们分配给您想要的任何属性。