Обновить
Во-первых, нет метода "контекст". Это было слово, которое мой мозг придумал в какой-то момент и закрепил за ним. Очевидно, я должен был запустить .excerpt(). Во-вторых, я запускал команду для возвращаемого массива, а не для отдельного экземпляра PG_Search::Document.
Двойные ошибки, но да, код действительно работает.
Завершить обновление
Сначала немного информации о системе:
- Рубин 1.9.3p194
- Рельсы 3.2.13
- pg_search 0.5.7
- Postgres 9.2.3 (с включенным безакцентом)
Я пытаюсь следить за прогрессом, достигнутым в этой теме: (Как показать выдержки из результатов мультипоиска pg-search)
Хорошо, если предположить, что используется следующий запрос, взятый из этого поста:
@query = params[:query]
PgSearch.multisearch(@query).select("ts_headline(pg_search_documents.content, plainto_tsquery('english', ''' ' || unaccent('#{@query}') || ' ''' || ':*')) AS excerpt")
возвращает:
=> [#<PgSearch::Document id: 7, content: "1 <p>You think water moves fast? You should see ice...", searchable_id: 2, searchable_type: "Release", created_at: "2013-03-27 18:58:52", updated_at: "2013-03-27 18:58:52">]
Он успешно возвращает некоторые результаты поиска, но в них вообще нет метода context
. Как будто я только что вызвал multisearch
без метода select
.
Я новичок в SQL и Postgres, поэтому я не совсем уверен, с чего начать отладку этого фрагмента. Я хотел бы получить помощь в отладке или получить объяснение того, что происходит.
Кроме того, я считаю важным отступление: я хочу поблагодарить всех, кто работает над pg_search или отвечает на подобные вопросы. Вы делаете мир лучше.