通过SOLRNET将SimilarResults添加到模型的本机方式

时间:2011-10-03 04:24:59

标签: solr solrnet morelikethis

我正在使用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

1 个答案:

答案 0 :(得分:3)

类似的结果不是文档的一部分,并且无论何时更新索引,实际上都可以更改。

无论如何,solr.Query返回一个ISolrQueryResults对象,而不仅仅是一个文档,因此您将在document.SimilarResults中有一个类似文档的列表,您可以将它们分配给您想要的任何属性。