Поиск французского через Thinking Sphinx в проекте ROR - PullRequest
1 голос
/ 21 марта 2010

Как я могу использовать sphinx для поиска французских слов, записи в БД на самом деле английские?

Ситуация такова:

У меня есть проект ROR с таблицей в БД, называемой "категориями", а названия категорий на английском языке, в категории есть много записей "вопросов".

В файле локализации config / locals / fr.yml эти категории были переведены на французский язык.

Обратите внимание на возможность расширения, мы не можем изменить названия категорий в БД на французский.

Пользователь может выполнять поиск по типу части ключевого слова.

Вот пример: Название категории: Здоровье и Медицина На французском: Santé et medecine

так как я могу это сделать: введите "Santé médecine abc" в поле поиска, и sphinx вернет "вопросы" в категории "Здоровье и медицина" и будет иметь ключевое слово "abc"?

1 Ответ

0 голосов
/ 21 марта 2010

Во-первых, я думаю, что вы не должны использовать файл yml для перевода данных в БД.Вы можете использовать yml для перевода имен столбцов БД или названий моделей и т. Д., Но не данные, которые хранятся в БД.Это плохой дизайн.Лучше всего было бы хранить разные переводы в БД, но вы хотели знать, как выполнять такой поиск, не сохраняя его в БД, поэтому:

Вы можете сделать это различными способами.Если вы генерируете ссылки на теги (как здесь, на SO), то это очень просто.Вы должны сгенерировать эти ссылки следующим образом:

# controller
@tags = Tag.all

# view 
<% @tags.each do |tag| %>
  <%= link_to I18n.t tag.name, search_tag_path(tag) %>
<% end %>

или что-то похожее в соответствии с вашими моделями и маршрутами.

Если вы хотите иметь несколько флажков или выбрать поля, в которых вы выбираете теги,вы должны сделать это подобно приведенному выше примеру:

# controller
@tags = Tag.all

# view
<% form_tag search_path do |f| %>
  <% @tags.each do |tag| %>
    <%= I18n.t tag.name %> <%= check_box_tag "tags[#{tag.id}]" %>
  <% end %>
<% end %>

Здесь при отправке вы получите массив идентификаторов выбранных тегов: params[tags].

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...