Google как поиск строки для sql - PullRequest
0 голосов
/ 05 ноября 2011

Допустим, у меня есть веб-приложение с базой данных postgres. Я хотел бы добавить строку поиска, похожую на Google (abc + site: xyz + size> 800 -pqrs). Таким образом, эта строка будет генерировать sql, используемый для возврата результатов из базы данных. Таблица для поиска - это в основном хранилище значений ключей с реляционными данными. Там могут быть разные способы сделать это.

Разбор / токенизация пользовательского запроса самостоятельно и создание sql или использование lucene или tsearch2 из postgresql. Не уверен, какой из них лучше. но я склонен к люцену. Если я использую lucene, могу ли я создать индекс в БД или он будет находиться в файловой системе? не нашел хороших руководств для последней версии lucene.

Могу ли я использовать solr в текущем веб-приложении или мне нужно запустить его как отдельный экземпляр сервера и выдавать запросы к нему? Некоторые полезные ссылки будут очень полезны.

1 Ответ

2 голосов
/ 05 ноября 2011

Разбор / токенизация пользовательского запроса самостоятельно и генерация sql

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

или используйте lucene или tsearch2 из postgresql.Не уверен, какой из них лучше подходит

В целом, выделенный FTS лучше.

Вы делали "домашнюю работу" и проводили некоторое время в Интернете?Пожалуйста, найдите "postgresql lucene" или "postgreSQL FTS" и прочитайте 5 лучших результатов.Начните с этой прекрасной презентации Билла Карвина: http://www.slideshare.net/billkarwin/full-text-search-in-postgresql

Какой подход лучше, это зависит от многих факторов, в том числе:

  • Вы на J2EE или нет?
  • Хотите минимального обслуживания или максимальной производительности?
  • Что такое шаблон использования базы данных, начиная с коэффициента чтения / записи?

Если я использую lucene, могу ли ясоздать индекс в БД или он будет находиться в файловой системе?

Большинство решений FTS, включая Lucene / Solr, используют свои собственные файлы статического индекса вне базы данных.Это просто лучше для нереляционных данных.

Могу ли я использовать solr в текущем веб-приложении или мне нужно запустить его как отдельный экземпляр сервера и выдавать запросы к нему?

Здесь ответили: http://lucene.apache.org/solr/#intro

...