Если вы найдете этот плагин полезным, пожалуйста, рассмотрите пожертвование, чтобы показать вашу поддержку!
www.paypal.com/cgi-bin/webscr?cmd=_send-money
Адрес PayPal: [email protected]
Этот плагин позволяет добавлять полное поиск с логическим приводом в любое приложение Rails без зависимостей и минимальной настройки.
Gem 'Acts_as_indexed'
Запустите bundle install . Сделанный.
./script/plugin Установка git: //github.com/dougal/acts_as_indexed.git
Если у вас нет установленного GIT, но все же хотите плагин, вы можете загрузить плагин со страницы GitHub (github.com/dougal/acts_as_indexed) и распаковать его в каталоге vendor/plugins вашего приложения Rails.
При обновлении до новой версии ACTS_AS_INDEXED рекомендуется удалить каталог индекса и позволить его восстановить.
Добавьте acts_as_indexed в верхнюю часть любых моделей, которые вы хотите индексировать, вместе со списком полей, которые вы хотите индексировать.
POST класс <Activerecord :: Base ACTS_AS_INDEXED: fields => [: title ,: body] ... конец
Поля не ограничиваются полями модели, но могут быть любым методом экземпляра текущей модели.
пользователь класса <ActivereCord :: Base
ACTS_AS_INDEXED: fields => [: адрес,: fullName]
DEF FullName
self.firstname + '' + self.lastname
конец
...
конецЛюбая из параметров конфигурации в разделе дальнейшей конфигурации может быть добавлено в отношении вызова метода ACTS_AS_INDEXED. Они будут переопределять любые значения по умолчанию или глобальную конфигурацию.
Вы можете указать PROC, который должен оценить True до того, как элемент будет проиндексирован. Это полезно, если вы хотите, чтобы предметы с определенным состоянием были включены. PROC проходит экземпляр текущего объекта, поэтому вы можете проверить это.
Например, если у вас есть видимый столбец, который является ложным, если пост скрыт, или верно, если он виден, вы можете отфильтровать индекс, выполнив:
POST класс <Activerecord :: Base
ACTS_AS_INDEXED: fields => [: title ,: body] ,: if => proc.new {| post | post.visible? }
...
конец Для поиска с наиболее релевантными совпадениями сначала вызовите метод find_with_index на своей модели, передавая запрос в качестве первого аргумента. Необязательный параметр ids_only , когда установлен на TRUE, вернет только идентификаторы любых соответствующих записей.
# Возвращает массив объектов Post, заказанные по релевантности. my_search_results = post . find_with_index ( 'мой поисковый запрос' ) # Передайте любой из вариантов поиска Activerecord. my_search_results = post . find_with_index ( 'My Search Query' , { : limit => 10 }) # вернуть первые 10 совпадений. # Возвращает массив идентификаторов, заказанных по актуальности. my_search_results = post . find_with_index ( 'My Search Query' , {}, { : ids_only => true }) # => [12,19,33 ...
Если актуальность результатов не важна, вызовите with_query с именем Scope на вашей модели, передавая запрос в качестве аргумента.
# Возвращает массив объектов Post. my_search_results = post . with_query ( 'мой поисковый запрос' ) # Цепьте его с любым количеством методов ActiveRecord и названного_SCOPES. my_search_results = post . публичный with_query ( 'мой поисковый запрос' ). Найти ( : all , : limit => 10 ) # вернуть первые 10 совпадений, которые являются общедоступными.
Поддерживаются следующие операторы запроса:
Это опция по умолчанию. «Cat Dog» найдет записи, соответствующие «кошке» и «собаке».
«Cat -dog» найдет записи, соответствующие «кошке», а не «собака»
«Cat +Me» найдет записи, соответствующие «Cat» и «Me», даже если «я» меньше, чем min_word_size
Цитируемые термины соответствуют фразам. «Кошачья собака» найдет записи, соответствующие всей фразе. Цитируемые термины могут предшествовать оператор Not; «Кошка -« Большая собака »и т. Д. Цитируемые термины могут включать слова, короче, чем min_word_size .
Условия, которые начинаются с ^ будут соответствовать записям, которые содержат слово, начинающееся с термина. '^Cat' найдет совпадения, содержащие «кошку», «катапульту», «Caterpillar» и т. Д.
Цитированный термин, который начинается с ^ соответствует любой фразе, которая начинается с этой фразы. '^«Cat D» найдет записи, соответствующие всем фразам «кошачья собака» и «кошачий ужин». Этот тип поиска полезен для автозаполнения входов.
Парень поддерживается с помощью метода paginate_search , первым аргументом которого является поисковый запрос, за которым следует все стандартные аргументы Will_Paginate.
@Images = изображение . paginate_search ( 'Girl' , : page => 1 , : per_page => 5 )
Поскольку with_query является названной областью, WillPaginate можно использовать обычным способом.
@Images = изображение . with_query ( 'Girl' ). Paginate ( : page => 1 , : per_page => 5 )
Блок конфигурации может быть предоставлен в файлах или инициализаторах вашей среды. Пример, показывающий изменение размера слова min:
ActsasAsIndexed . Настройка do | конфигурация | конфигурация min_word_size = 3 # Больше конфигурации по мере необходимости ... конец
Полное краткое изложение доступных параметров конфигурации можно найти в lib/acts_as_indexed/configuration.rb
Действует как индексированные, поддерживает Heroku вне коробки. Индекс создается в каталоге TMP, который является единственной записью в файловой системе Heroku Dyno. Пожалуйста, прочитайте документацию Heroku (devcenter.heroku.com/articles/read-onyly-filesystem) относительно их файловой системы.
Посмотреть документацию RDOC онлайн.
Все вышеперечисленное приветствуются. [email protected]
Огромное спасибо всем участникам этой библиотеки. Без них много ошибок и функций не произошло бы.
Douglas f Shearer - Douglasfshearer.com
Томас Помфрет
Филипп Арндт
Фернанда Лопес
Алекс Коулз
Myles Eftos
Эдвард Андерсон
Флорент Гуил
Бен Андерсон
Терон Туми
Уозо Озол
Габриэль Намиман
Роман Самайов
Дэвид Тернер
Паскаль Хурни
Райан Копф
На данный момент ACTS_AS_INDEXED работает только с символами Unicode, когда используется следующим образом:
https://gist.github.com/193903bb4e0d6e5debe1
Я переписал процесс токенизации, чтобы обеспечить легкую обработку этого в будущем.