2013-03-18 6 views
1

Я разрабатываю приложение для Android, в котором пользователю нужно ввести строку/предложение строк в качестве ключевого слова (ов) и на основе этого ввода, некоторая строка должна быть извлечена из базы данных. Я ищу подходящий алгоритм для этой цели. Я прошел множество ответов и многих алгоритмов, таких как tfidf и Boyer-Moore, но я все еще смущен выбором наиболее эффективного алгоритма. У кого-нибудь есть предложение? (цель состоит в том, чтобы получить некоторую строку, основанную на введенных ключевых слов)Алгоритм поиска по ключевому слову

Благодаря

+0

Если вопрос непонятен, сообщите мне! –

ответ

-1

Я написал поиска автозаполнения (по фразам/subphrases), вы можете увидеть производительность и словари размер на моем демо:

http://olegh.ftp.sh/autocomplete.html

Это машина Celeron-300, ОС FreeBSD. И загрузите менее 1% процессора во время активного поиска. Но написан на C++ и использует системные вызовы mmap/pread. Итак, я не уверен, будет ли он работать на Android. Я могу поделиться источниками по запросу.

Относительно алгоритма: Используется предварительно индексированный файл индекса хэш-индекса, на основе всех возможных префиксов из фраз из словаря. С помощью mmapped hash-table найдено ведро, которое извлекается в память с помощью pread.

Индексирование относительно медленной работы: Индексирование 15 000 000 слов в словаре может потреблять ~ 1час по сценарию PERL. Но поиск/извлечение происходит очень быстро, и производительность не зависит от размера словаря.

0

Я бы не рекомендовал писать собственный алгоритм; скорее, вы должны использовать существующую библиотеку, такую ​​как Apache Lucene.

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