Как мне создать механизм поиска для моего приложения? - PullRequest
6 голосов
/ 24 декабря 2008

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

Например: у вас есть 3 таблицы клиентов, продуктов, сотрудников. Приложение имеет главную страницу с текстовым полем в правом углу, очень похожим на то, что у вас в stackoverflow.

Как мне выполнить поиск по слову "Феникс" и получить результаты типа

Пользователи

Result 1
......

Продукты

Result 1
......

Сотрудники

Result 1
......

Буду очень признателен за любые советы, учебные пособия и подсказки. Моя среда - Win2k3, .net3.5, C #, ASP.net.

РЕДАКТИРОВАТЬ: особое внимание уделяется производительности и масштабируемости.

Заранее спасибо!

Ответы [ 7 ]

3 голосов
/ 24 декабря 2008

Lucene.NET - чрезвычайно быстрая полнотекстовая поисковая система.

Пример использования:

См. Исходный код из DotNetKicks начиная с код позади страницы поиска

2 голосов
/ 24 декабря 2008

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

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

После этого вы сможете создать приятный и умный пользовательский интерфейс, в котором аппарат сможет обнаружить, что код, такой как '*823*', ссылается на номера счетов 'INV-0823456' и 'INV-0880823', если счет числовое поле доступно для мягкого поиска. Пользователю даже может быть предоставлена ​​возможность выбрать столбцы для поиска, поскольку сканирование всех телефонных номеров в базе данных может не всегда иметь смысл.

Вы не должны пытаться индексировать все доступные для поиска столбцы. Стратегия «полного индекса» может стать очень дорогой с точки зрения дискового тома / нагрузки на сервер и не всегда будет иметь смысл для редко ищущихся столбцов. Не беспокойтесь об этом: пользователи не будут возражать против некоторой задержки при получении ответа.

1 голос
/ 24 декабря 2008

Xapian - это библиотека поискового движка с открытым исходным кодом с функциями , которые вы ищете.

1 голос
/ 24 декабря 2008

Один из способов: найти искомое значение во всех таблицах в базе данных . Конечно, этот код можно изменить, чтобы сосредоточиться на конкретных таблицах и столбцах.

0 голосов
/ 04 февраля 2009

Если вам нужно универсальное поисковое решение и вы хотите, чтобы поиск работал в течение нескольких минут на вашем сайте или в блоге, вы всегда можете использовать BuildaSearch . BuildaSearch позволяет быстро и легко создавать пользовательские поисковые запросы. Просто скопируйте и вставьте свой собственный код JavaScript, и вы сразу же получите полноценный пользовательский поиск, работающий на вашем сайте. Самая интересная особенность этой службы поиска заключается в том, что вам не нужно писать ни одной строки кода, и она работает в любой среде веб-сервера.

0 голосов
/ 24 декабря 2008

Если вы используете SQL Server для своей базы данных, вы можете попробовать полнотекстовый поиск SQL. Я использовал это довольно успешно.

0 голосов
/ 24 декабря 2008

Чтобы ответить на ответ fallen888:

Вы можете создать класс с методом, принимающим массив или список поисковых ключевых слов для ввода. Создайте запросы LINQ, относящиеся к каждой таблице, и, например, используйте оператор «LIKE» в некоторых из способов, описанных в этом блоге , для поиска в соответствующих столбцах соответствующего содержимого. Конечно, это будет не очень оптимизировано, но будет работать для небольших систем:)

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