2011-01-21 1 views
0

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

onetwothree one.two.three onesomethingtwoblah onesomething

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

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

ответ

1

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

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

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

Смежные вопросы