2010-11-24 2 views
0

У меня есть веб-приложение ASP.NET и List<Product> на сервере (в магазине Application []). Продукт класса имеет свойство Name. Мне нужно предоставить пользователям возможность поиска продуктов на основе имен. Например, если пользователь набирает «honda computer», приложение должно показать «2001 Honda Passport Engine Computer (OEM)». Поиск должен быть очень быстрым, в будущем я добавлю функцию автозаполнения (AJAX)..NET Application - проблема поиска

До сих пор у меня было несколько идей, как решить эту проблему:

  1. Write или использовать реализацию с открытым исходным кодом что-то вроде B-Tree, TRIE, дерево суффиксов, префиксов дерево. К сожалению, структуры данных и алгоритмы - это не мое самое сильное умение (проклятый Гарвард, так много денег ни за что).

  2. Используйте поисковую систему - Lucene.NET, Velocity или MemCached.NET. Никогда не использовал один, поэтому я не знаю, будут ли они работать в этом сценарии. Мне не нужно искать синонимы, и у моего приложения нет разрешений на доступ к файловой системе (поэтому нет индексного файла).

Любые советы приветствуются.

ответ

0

В зависимости от того, сколько данных у вас есть, использование suffix tree на самом деле было бы очень хорошей идеей. Обычно пользователи будут печатать с начала фразы, когда текстовое поле имеет автоматическое предложение, и поскольку вы можете искать дерево на основе символов, которые вводятся пользователем, как это, дерево суффикса автоматически отфильтровывайте возможные предложения, а также предоставляйте вам предложения для отображения при навигации по дереву.

Хотя верно, что они могут быть сложными для реализации, вы, возможно, сможете найти один написанный для .NET уже. Однако, поскольку они, как правило, очень полезны, вы можете найти хорошие материалы with information on how to write your own.

1

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

+0

Не могу этого сделать, DB из-под контроля. Мне нужно загрузить каталог продукта в память при запуске приложения. – 2010-11-24 03:24:57