Лучший способ для поискового слова в 150k словаре слов в приложении для iPhone?

Я разрабатываю простое приложение слова словаря на французском языке с 150k словами и определениями. Я ищу лучший способ сделать это.

Сначала я использую sqlite bdd с 150k словами. я использую команду LIKE для поиска слова, но это очень медленно исключая: ВЫБЕРИТЕ * ИЗ слов, ГДЕ слово КАК '%avoi %' ОГРАНИЧИВАЕТ 0,50; для поиска слова, кто содержит 'avoi' как 'avoir' или 'savoir'. моя таблица имеет индексы столбца слова, но КАК не использует индекс, таким образом, это очень медленно (2-5) s на 3G.

После того, как я использую fts3 расширение от sqlite для команды MATCH использования исключая: ВЫБЕРИТЕ * ИЗ слов, ГДЕ слово СООТВЕТСТВИЕ 'avoi*' ОГРАНИЧИВАЕТ 0,50; намного лучше (0,1-0,15s) на 3G, но это - только поиск слова, которые начинаются с 'avoi' слова как 'savoir', не находится в результате. Команда MATCH не работает с синтаксисом как 'avoi'

У Вас есть какие-либо идеи для, оптимизируют этот текстовый поиск?

У меня есть очень хороший exemple приложения для iPhone: Dixel (Robert Disctionnary), кто делает этот вид из поиска очень быстро. Какие-либо идеи для метода?

спасибо за ответы.

1
задан rubijn 15 July 2010 в 12:53
поделиться

1 ответ

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

. Одна из таких структур данных - это просто упорядочение слов на основе отношений между содержащимися в них буквами. Например. у вас есть таблица, в которой перечислены все слова, в которых за a следует v . Затем еще один для всех слов, в которых есть v , за которым следует o . Тогда поиск произвольной строки escape становится вопросом объединения таблиц с последовательным И. Итак:

(all words in which `a` is followed by a `v`) AND (all words in which `v` followed by an `o`)

Как только вы получите таблицу всех совпадающих слов с необходимым шаблоном, вы можете быстро перебрать ее.

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

2
ответ дан 2 September 2019 в 23:02
поделиться
Другие вопросы по тегам:

Похожие вопросы: