SolrNet: как использовать пользовательский поисковый компонент (и его результат) из solrnet - PullRequest
1 голос
/ 14 декабря 2011

В проекте, над которым я работаю, мы взаимодействуем с Solr, используя SolrNet.У нас есть собственный поисковый компонент в solr, который активируется добавлением join=true к запросу.(Я делаю это в solrnet через ExtraParams из CommonQueryOptions).В ответе есть пользовательский <lst name="joinresult"> после обычных результатов, который я хочу проанализировать и вернуть вызывающему.

Теперь я не знаю, где я могу чисто вставить пользовательский ResponseParser в конвейер SolrNet.

Что я сделал до сих пор:

  • Создан класс JoinResult<T> для хранения моего пользовательского результата
  • Создан JoinQueryResults<T> : SolrQueryResult<T> с IList<JoinResult<T>> JoinResultсвойство.
  • Создание IJoinResponseParser<T> : ISolrResponseParser<T> интерфейса
  • Создание JoinResponseParser<T> : IJoinResponseParser<T> для анализа результата пользовательского списка в свойстве JoinQueryResults.JoinResult.

Следующий шагзаключался в том, чтобы подключить все эти классы в нужных местах и ​​использовать SolrQueryExecuter<T>.Execute для выполнения остальной части тяжелой работы.Но это всегда будет возвращать SolrQueryResult, а не мой пользовательский результат.

Кто-нибудь знает, что мне нужно для поддержки моего сценария?

РЕДАКТИРОВАТЬ:
Что у меня такдалеко следующее:

  • Получите от SolrQueryExecuter<T> и добавьте метод ExecuteJoin(q,options), который возвращает JoinQueryResults<T>.

Это работает, но это не такдействительно чувствую себя "правильно".Мой метод Execute является копией обычного метода Execute только с одним существенным изменением: я заменил new SolrQueryResults на new JoinQueryResults.

Читая код SolrNet, я не смог найти какой-либо другой «простой» способ, поэтомуСейчас я придерживаюсь этого подхода.

1 Ответ

1 голос
/ 14 декабря 2011

Я не уверен, поддерживает ли библиотека SolrNet вставку пользовательских анализаторов ответов без изменения источника.

Однако я бы порекомендовал проверить источник для SolrNet на GitHub и посмотреть, как результаты Faceting или Highlighting анализируются из SolrQueryResponse. Основываясь на одном из этих примеров, вы сможете изменить источник для обработки созданных вами JoinQueryResults. Тогда, в идеале, вы могли бы внести это обратно в проект, чтобы другие тоже могли извлечь выгоду.

...