0

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

任何帮助将不胜感激,

提前致谢

J.P

4

1 回答 1

3

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

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

于 2011-10-04T09:34:13.530 回答