Я хотел бы код, который вы пишете в вашей модели Post. Я бы сделал метод, который бы
- принять строку поиска в качестве параметра
- уменьшить строку поиска и превратить ее в массив
2а. Я бы посоветовал убрать все одно- или двухсимвольные слова
- тогда я бы перебрал таблицу сообщений. Когда я прохожу каждую строку, я бы
- объединить заголовок и текст, уменьшить комбинацию и превратить ее в массив
- выполнить массив - операцию с массивом и сохранить каждый пост, где результатом является пустой массив
- вернуть полученные сообщения
Это не проверено - у меня нет такой модели, как ваша модель Post, но, надеюсь, вы можете получить то, что я делаю здесь:
def charlie_search (search_string)
output_array = []
Post.all.each do | p |
output_array.push (p.id), если search_string.downcase.split - (p.title.downcase.split + p.description.downcase.split) == []
конец
Post.find (output_array)
конец
Я не понимаю, что дорого в вашей ситуации.
Вы можете просто разместить окно поиска на сайте Google на своем сайте (я думаю, у Google все еще есть эта служба), и позволить Google проиндексировать все ваши страницы, а затем, когда кто-то делает поиск, они получат списки поиска типа Google для просто твой сайт.
В любом случае, поиск совпадений - это то, что поисковый индекс, такой как Google, действительно хорош, и я думаю, что это то, к чему стремились другие ответы - использование поискового индекса для получения результатов.