Есть ли способ с Solr для поиска нечетких и точных?

спасибо, что уделили время

Проблема

У меня проблема с поиском записей на основе поиска по нечеткому имени и точного поиска по региону. Это то, что у меня есть сейчас:

Что у меня есть сейчас

# :klantnaam is a param from a search-form
@param = Staffingcustomer.search do
    fulltext params[:klantnaam]
end
@staffingcustomers = @param.results

Есть еще одно поле "Регион".
Результаты должны быть только с определенным "Регио".

Пример требований

Так, например,
я пользователь с Regio 3. Я хочу визуализировать/выбрать всех Staffingcustomers с нечетким поиском по имени Анна и мой собственный Regio 3. Итак, я не хочу видеть Staffingcustomers с Regio 2.

Что происходит сейчас:

@param = Staffingcustomer.search do
     fulltext 'anne'
end
@staffingcustomers = @param.results

Вернет всех Staffingcustomers со всеми разными регионами...

После некоторых исследований / логического мышления

Я думаю, что это может быть что-то вроде следующего:

@param = Staffingcustomer.search do
    fulltext params[:klantnaam]
end
@staffingcustomers = @param.results.find(:all, :conditions => {:regio => 3})

or

@param = Staffingcustomer.search do
    fulltext params[:klantnaam] and fulltext '3'   ## or 3, without the quotes
end
@staffingcustomers = @param.results

Но это просто не работает.

Можете ли вы помочь мне с этой проблемой?

Логическая проблема

На самом деле это нечеткий поиск в «точно выбранной» части огромной таблицы.

Надеюсь, вы можете помочь.

Заранее спасибо.

Керс.


person Carsten    schedule 22.10.2012    source источник
comment
pipetodevnull.com/past/2010/8/5/   -  person Hitham S. AlQadheeb    schedule 22.10.2012


Ответы (1)


Я думаю, вы хотите что-то вроде:

# find Staffing Customers with Regio 3 and text of params[:klantnaam]
@param = Staffingcustomer.search do
  with(:regio, 3)
  fulltext params[:klantnaam]
end
@staffingcustomers = @param.results

См. https://github.com/sunspot/sunspot#readme . Вам также нужно будет индексировать regio в блоке Searchable вашей модели Staffingcustomer как любой тип данных, который вы сохранили в БД (например, целое число).

person konyak    schedule 12.11.2012
comment
Спасибо, это действительно должно сделать это. Я еще не проверял это, потому что я нашел способ обойти. Сначала я выбрал всех Staffingcustomers, где :regio =› 3, а затем запустил нечеткий поиск по ним. Это работает. Но еще раз спасибо, я ценю ваше направление. - person Carsten; 14.11.2012