Я хочу знать, может ли Postgresql обрабатывать следующие варианты использования?
У нас есть приложение, которое сканирует рекламу с разных платформ.Пользователи могут добавлять поисковые запросы с ключевым словом и другими атрибутами фильтров (цена, местоположение и т. Д.).Когда мы получаем новое объявление, мы хотим найти все поиски, которые соответствуют деталям объявления.
Мне нужно проверять, какой из этих запросов (поисков) соответствует объекту Advert каждый раз, когда Advert являетсяполучил.
Это в основном обратный поиск.
ОБНОВЛЕНИЕ
Пример:
У меня есть searches table
:
+----+-------------------+------------+----------+
| Id | keyword | startPrice | endPrice |
+----+-------------------+------------+----------+
| 1 | iphone 8 plus | 100 | 300 |
+----+-------------------+------------+----------+
| 2 | Ipohne 7 | 50 | 500 |
+----+-------------------+------------+----------+
| 3 | iphone 8 | 200 | 300 |
+----+-------------------+------------+----------+
| 4 | headphones iphone | 10 | 300 |
+----+-------------------+------------+----------+
СейчасУ меня есть и advert
объект со следующей структурой:
{
title: Sell Iphone 8 plus 32GB, white,
price: 250
}
Я хочу сделать запрос к таблице searches
, чтобы найти все поиски, которые соответствуют этому объявлению.В моем примере я ожидаю вернуть только результаты поиска 1 and 3
, поскольку цена 250
находится между startPrice
и endPrice
, а их keyword
- advert.title
: продать Iphone 8 плюс 32 ГБ, белый
Даже если в рекламном заголовке содержится слово iphone
, я не хочу получать запросы с идентификатором 2 and 4
, посколькуих keywords
не полностью совпадают (advert.title
не содержит 7 и наушников )
Elasticsearch имеет Percolate Query , которыйдает вам возможность сохранить запрос и выполнить этот запрос для каждого элемента в вашей коллекции.