2013-06-27 3 views
1

Вот моя структура данных:Использование Solr Регистрация для запроса местоположения

Users (UserName, Location) 
UserRecords (RecordId, Username, Category) 

Пример данных

Users: 
    (Bob, "38.45,-88.14"), 
    (Alice, "36.11,-87.32"), 
    (Jake, "37.45,-85.02") 

UserRecords: 
    (1, Bob, Medical), 
    (2, Bob, Contact), 
    (3, Alice, Medical), 
    (4, Jake, Social) 

Я хочу, чтобы запросить все записи Идентификаторы определенного типа, владельцы которых находятся в пределах определенного ограничивающего параллелепипеда , Пример: хочу все медицинские записи IdS владельцы которых находятся в пределах (36, -89) (39, -88):

Вот мой Solr запрос

q={!join+from=Username+to=UserName+fromIndex=Users}+(Location:[36.00,-89.00 TO 39.00,-88.00]) +(Category:Medical) 

Ошибка: Категория поле не определено

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

Я могу сказать, что Место работы-опрос, так как это возвращение вызова всех пользователей, которые необходимы:

q=Location:[36.00,-89.00 TO 39.00,-88.00] 

Любые предложения?

+0

Catergor Поле y не определено? Определено ли поле в schema.xml. Также я бы предпочел категорию запроса фильтра: медицинский для запроса результатов. – Jayendra

ответ

1

Вы можете попробовать что-то вроде этого:

/solr/UserRecords/select/?q=Category:Medical&fq={!join+from=Username+to=UserName+fromIndex=Users}Location:[36.00,-89.00 TO 39.00,-88.00] 

Я предполагаю, что вы 2 коллекции назвали «Пользователи» и «UserRecords»

+0

Да, это правильно (две таблицы: пользователи и UserRecords) – AstroSharp

0

Это оказывается, работает хорошо:

q= 
{!join+from=id+to=Username+fromIndex=Users}    
{!geofilt+sfield=Location+pt=38.89,-77.03+d=5} 
& fq=Category:Medical 

Это не совсем ограничивающая рамка, как было запрошено ранее, но лучший подход

+0

Упоминайте, как это лучший подход? Я вижу ту же проблему с bbox! –