2015-02-23 3 views
2

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

Итак, мы говорим, что если это foo, bar и bleh являются синонимами, а пользователь ищет «foo», система затем будет искать в базе данных записи, содержащие слово «foo» (duh), но это также смотрите в другой таблице (или что-то) для синонимов foo, и когда она найдет «bar» и «bleh», там также будут искать их при поиске в базе данных.

Какая база данных (традиционный MySQL или noSQL (MongoDB)) была бы лучше для этого? И как мне это сделать?

ответ

2

Для поиска по одному слову вы можете поддерживать список синонимов для данного слова, а затем искать их также. Вот хороший способ сделать это: Best way to store and retrieve synonyms in database mysql

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

IE, если он находит совпадение по исходному ключевому слову в заголовке, он вернет это, прежде чем он сделает синоним.

+0

Да, я думал, что-то вроде этого, спасибо! Теперь мне жаль, что я не знал, как на самом деле создать отношение ManyToMany с одной моделью в Django – Tebro

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