2014-01-28 4 views
0

У меня есть проблема с как-запросом в моем требовании project.The является 'как' srarch примерно 10 млн имени, например:'LIKE' Query Алгоритм


брода Эх фил jedwk edwords jones

Я хочу, чтобы имена srarch имели «edw», результатом должны быть «jedwk» и «edwords». Точно так же, как «выберите * из таблицы, где имя типа«% edw% »в sql.


У вас есть алгоритм, который может решить эту проблему? Спасибо!

+0

- простая петля, чтобы замедлить работу? если это так, то алгоритм, вероятно, не поможет. вам нужна структура данных * *. –

+0

Вы ищете методы поиска строк? Просто зайдите в Google или используйте Википедию: http://en.wikipedia.org/wiki/String_searching_algorithm –

ответ

0

Возможно, вы можете использовать вариацию suffix tree, где, кроме того, каждый лист в дереве содержит ссылку на исходную строку, на которую ссылается этот суффикс.

Это позволит вам следовать по пути входного запроса в дереве суффиксов, а оттуда сделать DFS, чтобы получить все доступные от этой подстроки листья. Каждый лист будет содержать соответствующие строки - и вам просто нужно их извлечь.


PS Обратите внимание, что большинство информационно-поисковых систем не позволяют «подстроки» поиск, только «поиска префикс» - который намного проще реализовать, используя trie, например.

+0

Спасибо! Я буду использовать этот алгоритм. – spruce