Как найти похожие имена из базы данных?

0

У меня есть данные 500 000.

как найти похожие имена из базы данных?

пример для "Microsoft" -> Microsys,Microcode,Microsystems,Microgroup...etc

Теги:

3 ответа

0
Лучший ответ

Три разных способа, затем реальный ответ.

CREATE TABLE company_names (
    company_name VARCHAR(35) PRIMARY KEY
);

INSERT INTO company_names VALUES ('Microsoft');
INSERT INTO company_names VALUES ('Microcode');
INSERT INTO company_names VALUES ('TrendMicro');
INSERT INTO company_names VALUES ('Microphones, Inc.');
INSERT INTO company_names VALUES ('Softonic');
INSERT INTO company_names VALUES ('Soft Touch Cleaning');
INSERT INTO company_names VALUES ('Software Systems');
INSERT INTO company_names VALUES ('SoftTouch Movers');
  • SELECT company_name FROM company_names ORDER BY SUBSTR (имя_компании, 1,4);
  • SELECT company_name FROM company_names WHERE имя_компании LIKE 'Micro%';
  • SELECT company_name FROM company_names WHERE имя_компании LIKE '% Micro%';

Но если ваша цель - найти похожие предприятия, я не буду полагаться на сходство в их именах. В США я бы, вероятно, купил список с сайта infousa.com на основе кода SIC или кода NAICS. Вы можете видеть, как эти коды работают на веб-сайте NAICS Association.

  • 0
    увидеть это имена уже в базе данных. Я не могу переустановить его, так как структура таблицы отличается. и уникальный индекс с названиями компаний. так что я надеюсь, что Micro% может работать ... но это задержит результаты ?? Я использую MySQL
  • 0
    Выражения типа «Micro%» могут использовать простой индекс. Выражения типа «% Micro%» не могут. Если это кажется медленным, используйте EXPLAIN SELECT ..., чтобы увидеть план запросов MySQL. Это должно сказать вам, использует ли он индекс.
1

В MySQL есть команда "SOUNDS LIKE", в которой перечислены все фонетически похожие записи. Я уверен, что есть что-то подобное для всех других систем БД.

  • 0
    Фонетические алгоритмы - soundex, metaphone и т. Д. - были разработаны для кодирования того, как звучат имена людей. Они действительно не очень хороши в кодировании названий компаний.
  • 0
    Согласно тэгам на этот вопрос, MySQL - это база данных, с которой мы имеем дело.
Показать ещё 1 комментарий
0

Вам нужно иметь некоторую логику для группировки похожих имен или того, как вы определяете термин "Подобный". Для "похожих" означает не только первые несколько символов, соответствующих словам. Например: "в этом случае" Microsoft "может дать вам результаты как Microsys, Microcode и т.д., Но другие слова, такие как программное обеспечение, softtonic и т.д., Также будут считаться схожими.

Ну, логика оставлена ​​вам, а затем вы можете разделить исходную строку соответствующим образом, а затем выполнить поиск в таблице с помощью предложения LIKE '%%'.

  • 0
    Я ищу сходства только в именах. не то, что они делают или их бизнес
  • 0
    @aron n - Вы можете использовать как, как я уже упоминал в ответе. Но опять же, сходство означает, что оно определено вами. Например: - аналог Microsoft означает, что вы должны решить, похожи ли другие слова, которые содержат «микро» или «mic» или «micr», или слова, которые соответствуют «soft», похожи или оба.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню