Многоязычный поиск в свободном тексте в приложении с нормализованными данными? - PullRequest
4 голосов
/ 22 апреля 2011

В нашей БД есть перечисления, произвольный текст, поля с ссылками и т. Д.

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

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

Каковы некоторые рекомендуемые подходы для поиска многоязычных нормализованных данных?Кто-нибудь занимался этим раньше?

1 Ответ

0 голосов
/ 04 августа 2011

ETL.Извлечь, преобразовать, загрузить.Другими словами, получить данные из существующих баз данных, преобразовать их (что больше, чем просто денормализовать их) и загрузить их в SOLR.SOLR db будет намного меньше, чем существующие базы данных, потому что нет реляционных издержек.Поиск в SOLR снимает большую часть нагрузки с существующих серверов баз данных.

Внимательно посмотрите, как настроить и использовать SOLR, и узнайте о ядрах SOLR.Возможно, вы захотите поместить некоторые языки в отдельные ядра, потому что таким образом вы сможете более эффективно использовать различные алгоритмы стемминга в SOLR.Но даже с многоязычными данными вы все равно можете использовать биграммы (например, используемые при анализе китайского языка).

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

Обычно вы включаете некоторые ключевые данные в индекс, чтобы при поиске записи через SOLRпоиск, вы можете ссылаться непосредственно в исходной БД.Кроме того, вы можете иметь нормализованные и ненормализованные данные вместе, например, перечисление может быть записано в нормализованном поле на английском языке, а также ненормализованное поле на том же языке, что и свободный текст.Поле может быть продублировано для применения двух разных процедур анализа и фильтрации.

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

...