Собственный способ добавить SimilarResults в модель через SOLRNET - PullRequest
0 голосов
/ 03 октября 2011

Я использую SOLRNET и использую функцию SOLR MoreLikeThis для получения документов, аналогичных возвращаемым.Мой код выглядит примерно так (в данном случае я выполняю поиск по идентификатору, так как уже знаю конкретный документ, который хочу загрузить):

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.Я могу перебирать словарь SimilarResults в SOLRNET и видеть, что подобные документы действительно возвращаются.Что мне интересно, так это то, что в моем классе MyDocument есть собственный способ сопоставить поле, чтобы оно заполнялось коллекцией типа MyDocument, представляющей аналогичные возвращаемые документы.

Если мне нужно перебирать подобные документы один за другим, это нормально, но я предполагаю, что есть простой способ сделать это.Я попробовал очевидные приемы, такие как сопоставление с использованием атрибута в моем классе MyDocument

   [SolrField("moreLikeThis")]
   public IDictionary<string,IList<MyDocument>> SimilarResults { get; set; }

Любая помощь будет принята с благодарностью,

Заранее спасибо

JP

1 Ответ

3 голосов
/ 04 октября 2011

Подобные результаты не являются частью документа, и могут фактически меняться при каждом обновлении индекса.

В любом случае solr.Query возвращает объект ISolrQueryResults, а не просто документ, поэтому у вас будет список похожих документов в документе. SimilarResults, которые вы можете назначить любому желаемому свойству.

...