Я предоставляю интернет-поиск пользователям книжного магазина.Пользователь может ввести название книги, автора или ISBN в одном поле.В поиске возникают проблемы, например, поиск не выполняется, если в названии (названии книги) указано неправильное написание. Например, при поиске по запросу «Люди Америки» будет выполнен поиск без ошибок, но «Люди Америки», «Люди Амреки» или «Люди»Америка "не даст мне точных результатов.
Я вызываю запросы через Java-приложение Spring Boot и, как хакер, делаю это в 3 этапа.Если первый запрос имеет 0 результатов, то я перехожу на второй, а если второй имеет 0 результатов, то я перехожу на третий.
Я пробовал такие вещи, как сопоставление с образцом и pg_trgm (триграммы Postgres), но так и не получилось.Любая помощь будет высоко оценена.
Первый запрос:
select distinct * from (select title, author, publisher, isbn, edition,
book_type, binding, price, image_isbn, special_price,
weight,currency_conversion.currency_name,
currency_conversion.abbreviation, currency_conversion.conversion_rate
from books inner join currency_conversion on currency_conversion.id =
books.currency_id where title ILIKE 'People of America' or isbn ILIKE
'People of America' or author ILIKE 'People of America') as ab;
Второй запрос:
select distinct * from (select title, author, publisher, isbn, edition,
book_type, binding, price, image_isbn,
special_price, weight,currency_conversion.currency_name,
currency_conversion.abbreviation, currency_conversion.conversion_rate from books
inner join currency_conversion
on currency_conversion.id = books.currency_id where title ilike '%People of America%' or isbn ILIKE '%People of America%' or author ilike '%People of America%') as ab
Третий запрос:
select distinct * from (select title, author, publisher, isbn, edition, book_type, binding, price, image_isbn, special_price,
weight,currency_conversion.currency_name, currency_conversion.abbreviation, currency_conversion.conversion_rate from books inner join currency_conversion
on currency_conversion.id = books.currency_id where title % 'People of America' or title ilike '%People of America%'
or isbn ILIKE 'People of America' or author % 'People of America') as ab