Нечеткий поиск PostgreSQL

PostgreSQL База данных

Нечеткое слово приводит к частичному или неясному. Этот поиск имеет дело с результатом, который не видит точного или идеального поиска. Нечеткий поиск данных в PostgreSQL содержит разные подходы. Либо через расширения, либо через алгоритмы. Но явление применяется в обоих направлениях. Эта статья будет содержать все возможные методы для демонстрации работы и реализации нечеткого поиска в данных PostgreSQL.

Реализация нечеткого поиска

Чтобы понять концепцию нечеткого поиска, нам нужно создать таблицу. Здесь создается таблица с именем painter со столбцами идентификатора, имени, национальности, пола и года рождения. Каждый столбец содержит свои типы данных соответственно:

>> CREATE TABLE painter (id INT, name VARCHAR, nationality VARCHAR, gender VARCHAR, birth_year INT);

Чтобы понять концепцию нечеткого поиска, нам нужно

После того, как таблица создана, пришло время передать данные в строках отношения, чтобы привести его в функциональное состояние. Оператор вставки используется для добавления значений в таблицу:

>> INSERT INTO painter (id, name, nationality, gender, birth_year) VALUES (1, ‘john’, ‘American’, ‘male’ , ‘2002’), ( 2, ‘Robert’, ‘British’, ‘male’ , ‘1990’), (3, ‘Rosee’, ‘American’, ‘female’ , ‘2000’), ( 4, ‘Shomia’ , ‘German’, ‘female , ‘1982‘);

того, как таблица создана, пришло время передать данные в

Все данные будут введены, как показано через сообщение о том, что в таблицу введены 4 строки.

Введенные данные можно просмотреть с помощью оператора select, используемого для выборки всех строк и столбцов соответствующей таблицы:

>> SELECT * FROM painter;

Как известно, нечеткий поиск — это тот, который вызывает частичное совпадение

Все данные отобразились. Как известно, нечеткий поиск — это тот, который вызывает частичное совпадение и дает наиболее близкий результат. Итак, мы попробуем каждый пример нечеткого поиска.

Пример 1: поиск через фильтр с подстановочными знаками

В этом примере мы будем извлекать запись из таблицы, применяя условие к столбцу имени. Любой столбец может быть затронут нечетким поиском. Эта ситуация может возникнуть, когда вы знаете начало имени, но не уверены в окончании, поэтому мы используем этот оператор «%» в конце имени. Это называется фильтром подстановочных знаков. Этот символ может быть для любого персонажа. Поэтому мы будем фильтровать результаты, в которых имя должно начинаться с «Роб». Запрос содержит оператор select для получения соответствующей строки имени. В первую очередь при применении любого условия после предложения where мы используем символ равенства ’=’. Но, поскольку мы не уверены в результатах, мы будем использовать «нравится» вместо этого символа «=»:

>> SELECT * FROM painter WHERE name LIKE ‘Rob%’;

огда вы знаете начало имени, но не уверены в окончании,

Результирующее значение показывает, что получена одна строка. Что соответствует названию. Точно так же мы будем использовать оператор «%» на обоих концах. Таким образом, этот фильтр будет искать имя художника, имя которого может начинаться или заканчиваться любой комбинацией символов:

>> SELECT * FROM painter WHERE name LIKE ‘%h%’;

так же мы будем использовать опера

Эта команда состоит из двух строк с буквой «h» в центре. Таким образом, вы можете видеть, что нечеткое сопоставление строк работает в PostgreSQL.

Читайте также:  Как извлечь временную часть с помощью функции MySQL TIME?

Пример 2

Используя ту же концепцию, если удалить слово, которое мы использовали в качестве ввода «RO», «b», то вы увидите, что будут выбраны те строки, имя которых начинается с RO:

>> SELECT * FROM painter WHERE name LIKE ‘Ro%’;

зуя ту же концепцию, если удалить слово, которое мы использо

Следовательно, вы можете видеть, что выбраны две строки. Чтобы снова отфильтровать результаты, мы можем использовать этот оператор двумя способами, применяя его в двух столбцах. Например, имя, начинающееся с того же слова «Ro%», будет найдено, но столбец национальности будет применен с фильтром строки, начинающейся с имени национальности «A%».

>> SELECT * FROM painter WHERE name LIKE ‘Ro%’ AND nationality LIKE ‘A%’;

ва отфильтровать результаты, мы можем использовать этот оператор

Таким образом, по условию будет выбрана одна строка.

Пример 3: Поиск с использованием триграмм

PostgreSQL имеет полезное расширение, которое используется для включения расширения pg_trgm. Это расширение используется для реализации некоторых функций поиска нечетких строк. Триграммы образуются, когда строка последовательно разбивается на группу из трех букв. Во-первых, нам нужно установить расширение в PostgreSQL. Потому что без включения расширения мы не можем применять нечеткий поиск по-разному:

>> CREATE EXTENSION pg_trgm;

зное расширение, которое используется для включения расши

Расширение добавляется в базу данных. Теперь мы применим некоторые команды, используемые в соответствии с установленными расширениями. В этом виде поиска мы используем ключевое слово «ПОХОЖЕСТВО» для поиска наиболее близкого совпадения, предоставляя вероятность диапазона, который показывает, насколько похожи строки по шкале от 0 до 1. В следующем примере мы будем искать от таблицу, применяя предложение where, имеющее сходство с «johr», поэтому 4-я буква в слове изменяется. Поиск будет по опечаткам:

>> SELECT * FROM painter WHERE SIMILARITY (name, ‘johr’) > 0.4;

екоторые команды, используемые в соответствии с установленным

Результат будет содержать строку с именем столбца, похожим на john, то есть john в таблице.

Теперь мы применим концепцию подобия к столбцу национальности в строках, содержащих «an» в строке, представленной в данных PostgreSQL. Результат будет ограничен двумя строками:

>> SELECT * FROM painter ORDER BY SIMILARITY (nationality, ‘an’) LIMIT 2;

рь мы применим концепцию подобия к столбцу национальности в строк

Результат будет содержать только две строки, так как мы применили ограничение. Таким образом, будут отображаться те строки, национальность которых содержит «an».

Читайте также:  REINDEX PostgreSQL

Пример 4: Поиск с помощью фонетических алгоритмов

Другой способ поиска — использование фонетических алгоритмов. Эти алгоритмы используют правила, используемые для представления строки с помощью короткого кода. Для этой цели PostgreSQL использует расширение, которое необходимо установить, чтобы мы могли включить работу поиска. Это расширение является нечетким сопоставлением строк:

>> CREATE EXTENSION fuzzystrmatch;

ругой способ поиска — использование фонетических алго

После установки расширения мы будем использовать любую функцию расширения. Например, мы будем использовать функцию, известную как Metaphone.

Metaphone: этот алгоритм используется для возврата кода разной длины. Это похоже на простую функцию, которую мы используем в PostgreSQL. Точно так же мы можем передавать аргументы этой функции. Например, указана длина, возвращающая значение этой длины.

В примере мы выберем идентификатор, имя и новый столбец с именем Metaphone, который сократит имя художника, чтобы сформировать аббревиатуру. Предложение where будет содержать условие для поиска гражданства, равного американскому:

>> SELECT id, name, METAPHONE (name, 10) FROM painter WHERE nationality = ‘american’ LIMIT 2;

ы выберем идентификатор, имя и новый столбец с имене

Вы можете видеть, что при выполнении столбец Metaphone будет содержать сокращенные формы имен художников.

Заключение

Эта статья проливает свет на частичный поиск данных путем применения сопоставления нечетких строк. Если пользователю неизвестны полные или частичные имена, он может легко получить информацию о записи с помощью этого типа поиска. Мы использовали элементарные примеры, касающиеся как алгоритмов, так и расширений в PostgreSQL.

Оцените статью
bestprogrammer.ru
Добавить комментарий