Я создаю небольшое словарное приложение, которое требует от пользователя ввода слова (на любом из двух языков) и отображения наиболее релевантных результатов (из 10 или более). Мой клиент хочет, чтобы это объясняло орфографические ошибки, поэтому я использую формулу расстояния Дамерау-Левенштейна. В качестве примера приведен фрагмент того, что должно делать приложение:
MySQL fields - Term1 -> Value1 | Term2 -> Value2
Implementation - English Term -> English Value | German Term -> German Value
----------
forge -> to forge your parent's signature | fälschen -> die unterschrift de eltern fälschen
Synonyms: fake, imitation, etc,
fake -> to fake your parent's signature | fälschen -> die unterschrift de eltern fälschen
Synonyms: forge, imitation, etc,
black out -> to black out a classroom (with blinds) | verdunkeln -> (einen klassenraum) verdunkeln
Поскольку fake и forge похожи, я хочу, чтобы результаты поиска для forge (или foreg и т. Д.) Возвращали оба. У меня сейчас работает грубая реализация, которая просматривает каждую строку большой базы данных, но это долгий процесс, и мне нужна лучшая система.
В качестве дополнительной информации я использую тезаурус Moby для поиска синонимов каждого возвращаемого слова. Чтобы сократить объемные синонимы (так как в массив помещается около 20 результатов), я, вероятно, отброшу записи, которые не найдены в базе данных.
В любом случае, я пытаюсь выяснить, есть ли более быстрый и эффективный метод поиска в базе данных, чем тот, который я использую сейчас. Я надеюсь, что я достаточно ясен, если не стесняйтесь спрашивать меня больше.
Большое спасибо!