Я пытаюсь реализовать pg_search
в моем приложении Rails и задаюсь вопросом, есть ли способ получить столбец, соответствующий поисковому запросу? Содержимое таблицы индексов состоит из всех полей столбцов поиска.Как получить столбец, соответствующий поисковому запросу?
т.д .:
+-----------+----------+
| Firstname | Lastname |
+-----------+----------+
| John | Doe |
| Jane | Doe |
+-----------+----------+
приведет:
+----------+
| Content |
+----------+
| John Doe |
| Jane Doe |
+----------+
И теперь я не знаю, если мой поисковый запрос соответствует ПгвЬЫате или LastName. Есть ли какие-либо опции, чтобы сообщить pg_search
, чтобы добавить заголовок столбца в колонку содержимого? Что-то вроде:
+------------------------------------------+
| Content |
+------------------------------------------+
| {"firstname": "John", "Lastname": "Doe"} |
| {"firstname": "Jane", "Lastname": "Doe"} |
+------------------------------------------+
Или есть альтернативы поиска, которые соответствуют моим потребностям? pg_search
работает очень хорошо, особенно из-за моей архитектуры multi-tenant/postgres-schema.
Благодаря! Но я не понимаю, где разместить код 'tsvector' - ОК, я сам не понимаю сам код, я должен посмотреть на документацию, но: это даже работает с несколькими поисками? Если есть 40 результатов, нужно ли выполнять запрос выбора для каждой строки, даже если модели одинаковы? Разве это не будет убийцей производительности? Альтернатива 2 не будет работать для меня, так как я использую более 4 столбцов. Я думаю, что лучшим вариантом будет хранение JSON в таблице контента (и поскольку Postgres 9.4 это можно сделать с помощью JSONB). – Slevin
Что значит «множественный поиск»? Мой первый пример работает с несколькими терминами, если это то, о чем вы просите. Что касается ваших моделей, этот код должен быть включен в ваши модели при запуске поиска, это дополнение к базовому оператору select, который уже выполняется, и это а не отдельный оператор выбора. –