2013-02-26 6 views
1

Я реализованный Пространственного поиск и необходим для создания граней для диапазонов или «ковшей» расстояний в Solr: по следующей ссылке помогла мне здесь - http://wiki.apache.org/solr/SpatialSearch#How_to_facet_by_distanceSolrnet эквивалента frange огранки запрос для расстояния

Я нашел решение на следующий вопрос Faceting on distance in solr- how to generate links that search withing a given range of distance полезно.

Я использую Solrnet для генерации запросов Solr с моего сайта на основе .NET. Я не могу найти ссылку, которая помогла бы мне создать часть frange (, выделенную курсивом), как показано ниже. Пожалуйста, помогите мне указать код, чтобы сгенерировать это, используя solrnet.

& д = : & sfield = & магазин пт = 45,15, -93,85 ** & facet.query = {! Frange л = 0 и = 5} geodist() & facet.query = {frange л! = 5,001 u = 3000} geodist() **.

ответ

3

Я предполагаю, что вы уже используете ExtraParams, чтобы установить параметры sField & pt. Вы также должны добавить параметры facet.query.

var results = solr.Query(SolrQuery.All, new QueryOptions 
{ 
    ExtraParams = new Dictionary<string, string> { 
       { "sfield", "store" } , 
       { "pt", "45.15,-93.85" } 
       { "facet.query", "{!frange l=0 u=5}geodist()" } , 
       { "facet.query", "{!frange l=5.001 u=3000}geodist()" } , 
      } 
}); 

return results; 

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

Update: Как указано в комментариях, использование ExtraParams не работает, потому что это объект словаря и в результате не допускается использование нескольких параметров facet.query. Тем не менее, я смог использовать Запросы Facet, как описано на странице Вики-страницы SolrNet Facet, приведенной выше, чтобы создать следующее:

var facet1 = new SolrFacetQuery(new SolrQuery("{!frange l=0 u=5}geodist()}")); 
var facet2 = new SolrFacetQuery(new SolrQuery("{!frange l=5.001 u=3000}geodist()}")); 
var results = solr.Query(SolrQuery.All, new QueryOptions 
    { 
     ExtraParams = new Dictionary<string, string> 
      { 
       {"sfield", "store"}, 
       {"pt", "45.15,-93.85"} 
      }, 
     Facet = new FacetParameters 
      { 
       Queries = new[] 
        { 
         facet1, facet2 
        } 
      } 
    }); 
return results; 
+0

Спасибо за ответ, Пейдж. Поскольку ExtraParams и LocalParams являются объектами словаря, я не могу передать facet.query дважды. Я пробовал это раньше :(Я тоже попробовал SolrQueryByRange, который генерирует диапазон в форме 1 TO 5, который не работает с Solr. Любые дополнительные указатели PLS. – user2112526

+0

Являются ли эти параметры facet.query одинаковыми все время? уметь указывать их прямо на обработчиках запросов на стороне Solr в разделе по умолчанию.Это обходной путь к повторяющимся вопросам facet.query. –

+0

Я только что разработал образец локально и обновил свой ответ. Кажется, это отправка правильного просьба к Solr –