Стратегия поиска - PullRequest
       2

Стратегия поиска

0 голосов
/ 21 января 2011

Я пишу Java-программу, которая должна найти возможные совпадения для указанных строк.Строки, как правило, имеют вид

один-два-три-три-три-один-два-один-один

, где один, два и три являются частями фактического названия.Матчи кандидатов из базы данных имеют вид один + два + три.Метод, который я придумал, заключается в сравнении каждого токена из кандидатов в базу данных со всей указанной строкой с использованием регулярных выражений.Счетчик количества совпадений токенов базы данных будет использоваться для определения ранга возможных совпадений.

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

1 Ответ

1 голос
/ 21 января 2011

Зависит, если у вас много записей в базе данных и большие строки для сравнения с поиском могут оказаться довольно дорогими.Потребуется передать всю входную строку для каждой записи.

Вы можете сделать один проход по входной строке и найти токены в базе данных.Некоторые умные поисковые индексы могут помочь ускорить это.При сопряжении нескольких токенов вам нужно будет найти способ узнать, когда остановить сканирование, и перейти к следующему токену.Частичные матчи могут помочь здесь;хранить один + два + три также как отдельные один, два и три.Или, если порядок имеет значение, сохраните его также как один, один + два и один + два + три.

В основном, когда вы сканируете, у вас есть список возможных записей в БД, который становится все меньше и меньше, сопоставимый с поиском по фасету.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...