Я начинающий разработчик для веб-сервера. Я разработал приложение для магазина, чтобы управлять своими заказами. Здесь возникает вопрос.
У меня есть таблица заказов, как:
orderId,orderNumber …
заказать столик типа
orderProductId, productId, productNumber, productName, productDescription.
У меня есть функция поиска, которая получает все заказы с помощью searchString.
API похож на
Get /api/orders?productNumberSearch={searchStr}&productNameSearch={searchStr2}&productDescriptionSearch={searchStr3}
Мой Импл похож на
String queryStr1 = getParameterFromRequestWithDefault(“productNumberSearch”,”");
String queryStr2 = getParameterFromRequestWithDefault(“productNameSearch”,”");
String queryStr3 = getParameterFromRequestWithDefault(“productDescriptionSearch”,”");
List<OrderProduct> orderProducts = getAllOrderProductsFromDatabase();
List<Interger> filterOrderIds = orderProducts.stream().filter(item->{
return item.getName().contains(queryStr1) && item.getNumber().contains(queryStr2) && item.getDescription().contains(queryStr3)
}).collect(Collectors.toList());
List<Order> orders = getOrdersByIds(filterOrderIds);
Я использую Spring MVC и MySQL. Коды выше работает. Однако, если одновременно поступает много запросов, исключение нехватки памяти будет выдано. Если в базе данных есть иероглифы, полнотекстовый поиск mysql не работает?
Так есть ли другой способ реализовать функцию поиска без упора поиска