Intereting Posts
WordPress-запрос для сообщений поднимает изменения в качестве результатов PHP-адрес электронной почты для спама Есть ли способ получить количество записей из запроса с помощью Zend-framework? Ошибка анализа: синтаксическая ошибка, неожиданный '(', ожидающий ',' или ';' в Алгоритм генерации цветных цветов RGB в PHP как создать безопасную систему регистрации php, позволяющую использовать функцию «сохранить меня в системе»? php, если последний символ является «/», если нет, PHP или Linux Shell: самый быстрый способ уменьшить текстовый файл с более чем 10 строками, чтобы иметь только последние 10 строк Получить URL-адрес для страницы mediawiki с названием Title – программно в PHP Как я могу сократить этот спам, и в чем его смысл? PHP получает выбранные строки таблицы из флажков PHP-шаблон реестра MySQL – Как выбрать строки, в которых значение находится в массиве? Как добавить версию активов в css и js? Как получить статус выполнения функции копирования в PHP?

как я могу сопоставить две строки, даже если они отличаются 1 символом?

У меня есть большая база предложений предложений и проблема, когда предложения типа «я хорош» не соответствуют «im good» и наоборот или «это мое?». не совпадающий с «это мой» и наоборот, когда я хочу, чтобы они были обнаружены как совпадение.

Я сделал сложные и грязные функции, пытаясь сделать это с помощью подстановочных знаков и исследований, но это просто большой беспорядок. и я уверен, что должен быть способ поиска с помощью этого 1 символа. Если бы я мог бы контролировать, какие символы получают этот путь, как в моих примерах, основными причинами проблемы являются знак вопроса и половина цитаты. (? ').

im в настоящее время использует запрос выбора плоскости с php и mysql для выполнения соответствующих запросов.

я хотел бы помочь, чтобы понять это, поэтому я могу очистить большой беспорядок кода, который в настоящее время выполняет работу непоследовательно.

в случае, если кто-то хочет видеть, что проверка кода для совпадений выглядит так:

$checkqwry = "select * from `eng-jap` where (eng = '$eng' or english = '$oldeng' or english = '$oldeng2') and (jap = '$jap' or japanese = '$oldjap' or japanese = '$oldjap2');"; 

цель запроса – просто проверить, есть ли уже перевод с $ eng и $ jap уже в БД. причина, по которой вы видите $ oldeng $ oldeng2 и $ oldeng3 и т. д., как я уже сказал, мои грязные глупые попытки сопоставить, даже если есть знак или нет вопросительного знака и так далее. где некоторые переменные $ oldeng имеют вопросительные знаки или полуквоты и т. д., а остальные – нет. есть больше кода над добавлением и удалением вопросительных знаков и прочее. да это большой беспорядок.

Solutions Collecting From Web of "как я могу сопоставить две строки, даже если они отличаются 1 символом?"

Вы хотите использовать алгоритм String Metric, как указано выше, PHP имеет эту функцию, построенную в http://php.net/manual/en/function.levenshtein.php, а также http://www.php.net/manual/ ru / function.similar-text.php .

MySQL не реализует этот (конкретный алгоритм) изначально, но некоторые люди пошли вперед и написали хранимые процедуры для достижения того же: http://www.artfulsoftware.com/infotree/queries.php#552

По-моему, использование String Metric, которое может обрабатывать произвольные изменения, лучше, чем удалять пунктуацию, а также может улавливать упущения, транспозиции и т. Д. …

Вероятно, лучше просто вырезать не буквенно-цифровые символы перед сравнением строк.

Вы можете использовать функцию replace в sql для замены "" на "" и "?" с "".

Возможно, вам захочется взглянуть на полный текстовый поиск в языке MySQL. Добавьте индекс FULLTEXT в столбец eng.

  ALTER TABLE `eng-jap` ADD FULLTEXT INDEX `full` (`eng`) ; 

Затем используйте функцию соответствия:

  select * from `eng-jap` where match(eng) against ('Im happy'); 

Это вернет меня, и я счастлив, и я счастлив

Если вы выберете показатель релевантности, например:

  select id, match(eng) against ('Im happy') from `eng-jap` where match(eng) against ('Im happy'); 

вы можете использовать его для дальнейшей обработки совпадений в PHP и фильтрации.

[РЕДАКТИРОВАТЬ]: Только что подтвердили, что оценка релевантности вчера и вчера? тоже одно:

  select *, match(eng) against ('yesterday') as mc from `eng-jap` 

Результат:

  6, yesterday?, 0.9058732390403748 7, yesterday, 0.9058732390403748 

Примечание. Для применения полнотекстового индекса ваш движок mysql должен быть MyISAM. Кроме того, предложение должно содержать более 3 символов. Индекс, похоже, не соответствует слову «да».