Реализация поиска по списку / таблице медицинских ссылок, которая позволяет использовать синонимы / аббревиатуры, и импорт такой вещи. - PullRequest
0 голосов
/ 13 января 2011

Я составляю простой список с возможностью поиска, который в итоге будет содержать около 100 000 ссылок на различные медицинские темы - в основном, медицинские состояния / заболевания.Теперь, на первый взгляд, это звучит просто ... фактически я настроил свои таблицы следующим образом:

  • Ссылки: id, url, name, topic
  • Темы (например, кардиология, педиатрия и т. Д.): Идентификатор, имя
  • Условия (например, астма, грипп и т. Д.): Идентификатор, имя, псевдонимы

И, возможно, другая таблица:

  • Ссылка и условие (поскольку 1 ссылка может относиться к нескольким условиям): идентификатор ссылки, идентификатор условия

Так что, в основном, поскольку врачи (включая меня) очень привередливы, я хочу сделать этотак что если вы ищете условие - будь то аббревиатура, британский или американский английский или альтернативное древнее имя - вы получите релевантные результаты (например, «ангиоотек», «ангионевротический отек», «отек Квинке» и т. д.)те же результаты, аналогично «гастроэзофагеальной рефлюксной болезни», «гастроэзофагеальной рефлюксной болезни», GERD, GORD, GOR).Кроме того, в верхней части результатов было бы хорошо сгруппировать ссылки для диагностики, которая соответствует поисковой строке, затем найти совпадения для имени ссылки и, наконец, соответствовать теме.

Моя главная проблема заключается в том, чтоСуществуют тысячи, если не десятки тысяч состояний, каждое из которых содержит до 20 синонимов / написаний и т. д. Один из вариантов - получить данные из MeSH , который является своего рода медицинским тезаурусом (но только в американском английском).так что должен был быть способ конвертации с британского английского).Проблема в том, что XML, который они предоставляют, БЕЗУМЕН и около 250 МБ.Чтобы помочь им получить руководство по элементам данных.

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

Интересно, кто-нибудь может мне помочь?С удовольствием уточню все, что неясно.

Ответы [ 2 ]

0 голосов
/ 14 января 2011

Ваша проблема хорошо подходит для ориентированного на документы магазина, такого как Lucene.Например, вы можете создать схему, такую ​​как

Ссылка Условия темы

  1. Затем вы можете написать запрос Lucene, например Topic: edema, и вы должны получить все результаты.Вы можете сделать поиск по шаблону для большего.

  2. Чтобы сопоставить британское написание (или даже орфографические ошибки), вы можете использовать запрос ~, который находит термины в пределах определенного расстояния строки.Например, edema ~ 0.5 соответствует edema, oedoema и т. Д. ...

Apache Lucene - это библиотека Java с портами, доступными для большинства основных языков.Apache Solr - это полноценный поисковый сервер, созданный с использованием Lucene lib и легко интегрируемый в выбранную платформу, поскольку он имеет RESTful API.

Резюме: я рекомендую использовать Apache Solr как дополнение к вашей базе данных MySql.

0 голосов
/ 13 января 2011

Это сложно. Лучше всего использовать MeSH, а затем, возможно, и soundex, чтобы соответствовать британскому английскому языку.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...