2010-11-24 6 views
0

서버 (응용 프로그램 [] 저장소에 있음)에 ASP.NET 웹 응용 프로그램과 List<Product>이 있습니다. 클래스 제품에는 Name 속성이 있습니다. 사용자가 이름을 기반으로 제품을 검색 할 수 있어야합니다. 예를 들어 사용자가 '혼다 컴퓨터'를 입력하면 앱에 '2001 Honda Passport Engine 컴퓨터 (OEM)'가 표시되어야합니다. 검색은 매우 빨라야하며, 앞으로 자동 완성 기능 (AJAX)을 추가 할 것입니다..NET 응용 프로그램 - 검색 문제

  1. 쓰기 또는 B-나무, 트리는, 픽스 트리, 접두사 나무처럼 뭔가의 오픈 소스 구현을 사용

    은 지금까지 나는이 문제를 해결하는 방법을 몇 가지 아이디어를 가지고 있었다. 불행하게도 데이터 구조와 알고리즘은 나의 가장 강력한 기술이 아닙니다.

  2. Lucene.NET, Velocity 또는 MemCached.NET 검색 엔진을 사용하십시오. 절대 사용하지 마십시오. 따라서이 시나리오에서 작동하는지 모르겠습니다. 동의어를 검색 할 필요가 없으며 내 앱에 파일 시스템에 액세스 할 수있는 권한이 없습니다 (색인 파일이 없음).

모든 의견을 환영합니다.

답변

0

얼마나 많은 데이터를 가지고 있느냐에 따라 suffix tree을 사용하는 것이 실제로 매우 좋습니다. 일반적으로 사용자는 텍스트 상자에 자동 제안 기능이 활성화되어 있고 사용자 입력에 의해 입력되는 문자를 기준으로 트리를 검색 할 수 있기 때문에 구문의 시작 부분부터 입력하게됩니다. 가능한 제안을 자동으로 필터링하고 트리를 탐색하여 표시 할 제안을 제공합니다.

구현하기가 복잡 할 수도 있지만 실제로 .NET 용으로 작성된 것을 찾을 수 있습니다. 그러나 그들은 매우 유용하기 때문에, 좋은 재료를 찾을 수 있습니다 with information on how to write your own.

1

이러한 제품은 언제든지 데이터베이스에 저장되어 있습니까? 많은 대중적인 데이터베이스 (Microsoft SQL Server 포함)는 대규모 데이터 세트를 통한 텍스트 검색의 빠른 방법 인 프리 텍스트 검색 인덱싱을 지원합니다.

+0

그럴 수 없습니다. DB가 제 통제에서 벗어났습니다. 응용 프로그램 시작시 제품 카탈로그를 메모리에로드해야합니다. –

+0

확실히 위에서 언급 한 알고리즘을 직접 구현하지 마십시오. 이런 식으로 해봤습니까? http://www.codedigest.com/CodeDigest/52-Search-in-Generic-List-T--in-C-.aspx –