2010-10-11 2 views
0

Я использую жемчужину Sunspot в своем приложении RoR, чтобы выполнять поиск по модели Post, и она отлично работает для этого. Тем не менее, мне нужно использовать алгоритм сопоставления для одного объекта post.Sunspot Solr, соответствующий одному объекту

Например, я могу найти все сообщения, как это:

Sunspot.search Post do 
    ... 
end 

Но, мне нужно, чтобы сделать поиск с одного почтового объекта, например, так:

Sunspot.search @post do 
    ... 
end 

Возможно ли это?

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

+0

Вы имеете в виду, что хотите сделать это в RoR? Или вы хотите получить совпадение с тем, что хранится в Solr? –

+0

Я хочу сделать это в RoR. Когда я делаю это совпадение, элемент может быть добавлен или не добавлен в solr. Поэтому было бы неплохо использовать те же логические решения solr, чтобы выполнить сопоставление в моем приложении RoR. –

ответ

0

Я не думаю, что это возможно. Это Solr и Lucene, а не Sunspot, у которых есть все алгоритмы, которые определяют, является ли что-то подходящим или нет для любого заданного запроса. Клиенты Solr просто строят параметры запроса и подают их в Solr, затем анализируют результаты Solr.

+0

Я так много думал, но надеялся на что-то скрытое в API, который я мог бы использовать. Ну что ж. –

0

Я не совсем уверен, как это сделать с солнечным пятном, но одна вещь, которую вы можете попробовать, - это напрямую запросить RSolr, передать идентификатор модели, которую вы хотите проверить: fq, и посмотреть, возвращается ли она результат или нет. Должно возвращаться довольно быстро из-за запроса фильтра:

solr = RSolr.connect(:url => Sunspot.session.config.solr.url) 
solr.select :q => solr_query, :fq => ['type:Post', "id:#{@post.id}"] 
Смежные вопросы