Использование SolrNet для пространственного поиска и нескольких столбцов - PullRequest
0 голосов
/ 27 июля 2011

Я новичок в Solr.Использование следующего запроса Solrnet для запуска моего поиска.

results = solr.Query(new LocalParams { { "type", "dismax" }, { "qf", "Title Description" } } + new SolrQuery(Keywords) , queryOptions);

Приведенный выше запрос работает без каких-либо проблем.Я попытался выполнить пространственный поиск в том же запросе, используя следующее.

results = solr.Query(new LocalParams { { "type", "dismax" },{ "pt", "40.7143528,-74.0059731" },{ "sfield", "coords" },{ "d", "15" }, { "qf", "Title Description" } } + new SolrQuery(Keywords) , queryOptions);

Приведенный выше запрос не учитывает пространственный поиск, он скорее возвращает результаты всех документов.

Тот же запрос выполняетПространственный поиск, если изменить «тип» на «геофильт».

results = solr.Query(new LocalParams { { "type", "geofilt" },{ "pt", "40.7143528,-74.0059731" },{ "sfield", "coords" },{ "d", "15" }, { "qf", "Title Description" } } + new SolrQuery(Keywords) , queryOptions);

Но на этот раз он не возвращает соответствующие результаты.то есть, если пользователь выполнил поиск "Toyota", указанный выше запрос с type = geofilt может вернуть "FORD" в течение 15 км.

Не могли бы вы указать мне правильное направление?

1 Ответ

0 голосов
/ 28 июля 2011

Здесь есть два предложения: запрос dismax по ключевым словам и геопространственный запрос, но вы пытаетесь объединить оба предложения в один. Вместо этого представьте их как отдельные пункты запроса (отдельные объекты запроса).

псевдокод:

var spatial = new LocalParams {{"type","geofilt"},...} + new SolrQuery("");
queryOptions.FilterQueries = new[] {spatial};
var keyword = new LocalParams { { "type", "dismax" }, { "qf", "Title Description" } } + new SolrQuery(Keywords);
var results = solr.Query(keyword, queryoptions);
...