Приложение .NET - проблема поиска - PullRequest
0 голосов
/ 24 ноября 2010

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

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

  1. Напишите или используйте реализацию с открытым исходным кодом, например, B-Tree, Trie, Suffix tree, Prefix tree.К сожалению, структуры данных и алгоритмы не являются моим самым сильным навыком (чертов Гарвард, так много денег ни за что).

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

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

Ответы [ 2 ]

1 голос
/ 24 ноября 2010

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

0 голосов
/ 24 ноября 2010

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

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

...