2012-02-03 1 views
1

Я работаю над приложением рельсы У меня есть три различные модели следующим образомКак полнотекстовый поиск в postresql эффективно через несколько моделей?

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

id | product_name| product_description 

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

id | name | location | timestamp 

Магазины Модель

id | product_id | user_id | location 

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

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

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 

Я использую texticle камень для поиска через эту точку зрения.

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

ответ

1

SELECT p.id, p.product_name, p.product_description, s.location FROM product p, shopping s WHERE p.description = 'xyz' ИЛИ ​​s.location = 'New York' AND p.id = shopping. product_id ORDER BY p.product_name

+0

эй во время поиска вы можете ввести один термин за раз, либо можете ввести xyz или newyork, чтобы моя проблема все еще не решена. –

+0

попробуйте использовать 'p.description = 'xyz' ИЛИ ​​s.location = ' New York'' и сообщите мне, если это сработает –

Смежные вопросы