Частичные совпадения с полнотекстовым поиском postgresql с использованием текстов на Heroku - PullRequest
4 голосов
/ 24 февраля 2012

Попытка заставить поиск работать на Heroku с использованием частичного поиска

Следующий запрос генерирует ошибку SQL на Heroku, но работает корректно в моей локальной версии:

@events.search(params[:search]+":*")

Я используюСлужба совместно используемой базы данных Heroku, это возможная разница в синтаксисе между версиями PostgreSQL?

Какой синтаксис я должен использовать для частичного поиска по полнотекстовому индексу в PostgreSQL 8?

Ответы [ 4 ]

3 голосов
/ 27 февраля 2012

Вот изменения в PostgreSQL 9.1 .

Возможно, вы можете попробовать использовать интерполяцию строк вместо конкатенации.

@events.search("#{params[:search]}:*")

Я не совсем уверен, чтосмайлик поцелуя: * добавляет текстиль функциональность.Может быть, мне нужно больше узнать SQL.

2 голосов
/ 04 марта 2012

Оказывается, что PostgreSQL версии 8 не поддерживает частичный поиск с использованием синтаксиса: *.

1 голос
/ 02 мая 2012

Как говорит http://www.postgresql.org/docs/9.0/interactive/textsearch-controls.html#TEXTSEARCH-PARSING-QUERIES, использование ": " для указания соответствия префикса.Например, если поиск «Австралия» с помощью «Aus: » будет работать, но не «ust: *».

Так что concat OR xxxx, как "% yyy%", будет работать лучше

0 голосов
/ 11 января 2017

Вы можете использовать опцию tsearch с префиксом:

:tsearch => {:prefix => true}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...