Как эффективно выполнять полнотекстовый поиск в postresql по нескольким моделям? - PullRequest
1 голос
/ 03 февраля 2012

Я работаю над приложением рельсов. У меня есть три модели:

модель продукта

id | product_name| product_description 

Модель пользователя

id | name | location | timestamp 

Модель покупок

id | product_id | user_id | location

Теперь в моем приложении пользователь может искать разные товары.Предположим, что описание продукта - xyz, и кто-то из Нью-Йорка купил его.Итак, теперь я хочу искать таким образом, что если кто-то ищет xyz, будут возвращены записи из таблицы продуктов, а также, когда кто-то ищет Нью-Йорк, он должен вернуть весь продукт, купленный в Нью-Йорке.

Iсоздали представление таблицы продуктов и моделей покупок следующим образом.

 SELECT DISTINCT product.id , product.description , shopping.location 
  FROM product LEFT JOIN shopping ON product.id = shopping.product_id group by  product.id, product.description,shopping.location  

Я использую текстильный драгоценный камень для поиска в этом представлении.

Но проблема с вышеуказаннымПредположим, что 10 человек из 10 разных мест купили продукт XYZ, тогда в наборе результатов для поиска по описанию продукта будут найдены повторяющиеся результаты.Как избежать такого дублирования?Пожалуйста, помогите.

1 Ответ

1 голос
/ 03 февраля 2012

SELECT p.id, p.product_name, p.product_description, s.location ОТ продукта p, покупки s ГДЕ p.description = 'xyz' ИЛИ ​​s.location = 'Нью-Йорк' И p.id = shopping.product_id ЗАКАЗАТЬ по p.product_name

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...