Любой способ сравнить / сопоставить предложения только с другим порядком слов? - PullRequest
0 голосов
/ 03 августа 2011

У меня есть 2 таблицы MySQL, каждая с адресными данными компаний. Одна таблица более свежая, но в ней нет телефона и данных на сайте. Теперь я хочу объединить эти таблицы в одну из последних и полных таблиц.

Но для некоторых компаний порядок слов различен, например:

'Bakery Johnson' в таблице 1 и 'Johnson Bakery' в таблице 2.

Теперь мне нужно найти способ сравнить эти значения, поскольку они, очевидно, принадлежат одной и той же компании.

Думаю, мне сначала придется разделить эти имена, а затем упорядочить разные части в алфавитном порядке.

Есть ли шанс, что кто-то делал что-то подобное раньше и хотел бы поделиться каким-нибудь кодом или функцией?

UPDATE: Я нашел функцию, которая сортирует слова внутри строки. Я могу использовать это для обнаружения перестановок имен, как описано выше. Хотя это довольно МЕДЛЕННО ...

См .: MySQL: как отсортировать слова в строке с помощью хранимой функции?

Ответы [ 2 ]

1 голос
/ 03 августа 2011

Если ваша таблица MyISAM, вы можете выполнить этот запрос:

SELECT  *
FROM    mytable
WHERE   MATCH(name) AGAINST ('+bakery +johnson')

Здесь будут найдены все записи, содержащие слова bakery и johnson (и, возможно, некоторые другие слова).

Создание индекса FULLTEXT для таблицы:

CREATE FULLTEXT INDEX
        fx_mytable_name
ON      mytable (name)

ускорит этот запрос.

0 голосов
/ 03 августа 2011

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

Вы предоставляете своему пользователю опцию, поскольку он находит что-то подозрительное:

Is this a duplicate? Use our [ Merge ] option

Вы объединяете пекарню Джонсона, пожалуйста, выберите источник / оригинальный элемент:

[ Johnson Bakery v ] (мой потрясающий выпадающий список!)

Все, чего еще нет в Johnson Bakery, портируется в Bakery Johnson (например, заказы), вы можете также показать промежуточный экран, показывающий, что будет объединено, или позволить пользователю выбрать, например, что он хочет получить информацию об адресе от Johnson Bakery и заказы от обоих и т. д.

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

...