2009-11-09 5 views
1

У меня есть требование, когда пользователь вводит несколько терминов в поле поиска и нажимает «идти». Есть ли у кого-нибудь хорошие ресурсы о том, как реализовать динамический поиск, который охватывает несколько таблиц базы данных?Каков наилучший способ реализации поиска?

Спасибо, Майк

+0

Я думаю, вам нужно указать немного больше ... –

+0

Слишком расплывчато, но меня интересует, какие ответы подходят. Мы также работаем над инструментами поиска для нашего программного обеспечения. – JoshBaltzell

+0

Пожалуйста, перефразируйте свой вопрос, чтобы не быть субъективным. «Лучший способ» будет варьироваться от человека к человеку. –

ответ

3

Это называется Full-text Search.

http://msdn.microsoft.com/en-us/library/ms142571.aspx

+0

Полнотекстовый индекс включает в себя один или несколько столбцов на основе символов в таблице. Это то, что вы мясо, в одном столе? –

0

Вы можете создать СП, которые получают поисковые термины, как параметры и Retun некоторые «выбирает»() набора записей в программе, которая начала. Он может возвращать выбор для каждой таблицы, и вы можете делать все, что вам нужно, с данными в вашем коде приложения.

Если вам нужно получить только набор данных, вы можете сделать представление с использованием UNION таблиц для консолидации столбцов в общей схеме и затем фильтровать представление таким же образом. Вы получите в своем приложении только набор данных со всей информацией, консолидированной в представлении и отфильтрованной.

2

Это довольно загруженный вопрос, учитывая отсутствие деталей. Если вам просто нужен простой поиск по нескольким таблицам/столбцам, вам может быть достаточно одного (cludgy) поиска SP.

Тем не менее, если вам нужно больше возможностей, таких как:

  • При поиске большой набор таблиц
  • Поддержка больших объемов данных
  • Поисковые над формами слова
  • Логические операции
  • и т.д.

тогда вы могли бы хотите посмотреть полнотекстовый поиск (который входит в состав MS Sql 2000 и выше). Первоначальные инвестиции для ускорения работы с полнотекстовым поиском могут быть немного компенсирующими, но по сравнению с реализацией вышеуказанных функций вы, скорее всего, сэкономите массу времени и энергии.

Вот некоторые полнотекстового поиска ссылки, чтобы вы начали:

Надежда, что помогает.

6

Я собираюсь бросить в мой голос за Lucene. Хотя SQL Server обеспечивает полную индексацию текста и некоторые возможности поиска, это не самая большая поисковая система. По моему опыту, он не обеспечивает наилучшие результаты или рейтинг результатов, пока у вас не будет значительного объема индексированных предметов (от десятков до нескольких сотен тысяч).

Напротив, Lucene явно является поисковой системой. Это инвертированный индекс, который ведет себя так же, как ваш запуск интернет-поисковой системы мельницы. Lucene предоставляет очень богатую платформу индексирования и поиска, а также некоторые богатые C# и .NET API для запроса индексов. Существует даже LINQ для провайдера Lucene, который позволит вам запрашивать индекс Lucene с LINQ.

Единственным недостатком использования Lucene является то, что вам нужно создать индекс, который является процессом боковой полосы, который выполняется независимо от базы данных. Вы также должны написать собственный инструмент для управления индексом. Ваш поисковый индекс, в зависимости от того, как часто вы его обновляете, может быть не более 100% до последней минуты. Как правило, это не вызывает большого беспокойства, но если у вас есть ресурсы, индекс Lucene должен обновляться каждые несколько минут, чтобы сохранить «свежие».

+1

+1. Посмотрите также на SOLR, если вам нужна более существенная операционная система вокруг вашего поиска. – jro

1

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

«Microsoft Wa ворот»

и вывести список результатов, содержащий результаты для "gates", "microsoft" и "washington".

Lucene похоже, что это может быть довольно круто.

+1

Взгляните на следующий сайт (примеры LINQ to Lucene). Это должно дать вам представление о том, что возможно с Lucene: http://linqtolucene.codeplex.com/wikipage?title=Project%20Documentation&referringTitle=Home – jrista

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