2010-01-05 2 views
4

대용량 데이터 집합에서 "선행 자동 완료"를 구현하는 방법에 대해 기술에 의존하지 않는 질문으로 생각하는 .NET WinForms/ASP.NET 개발자입니다. 누군가가 참조 구현이나 자세한 설명에 날 지점 수 있다면, 그것은 좋은 것입니다,하지만 여기 내 질문은 :대형 데이터 집합에 대한 선행 자동 완성을 구현하는 데 사용되는 전략은 무엇입니까?

  1. 아마도, 사용자 및 일부 간격 후, 클라이언트가 데이터를 서버에 요청 타이핑 시작 앞서 유형을 수행합니다. 그 간격이 얼마나 길다는 경험 법칙이 있습니까? 검색 할 데이터 세트가 커질수록이 규칙이 변경됩니까? 사용자가 다시 입력을 시작했지만 이전 쿼리가 데이터 세트의 크기 때문에 완료되지 않은 경우 어떻게해야합니까?

  2. 데이터 집합을 가져 오는 데 사용되는 쿼리 전략은 무엇입니까? 분명히 쿼리는 비동기 적이어야하지만 단순히 SQL "% 검색 용어 %"가 아닌가? 어떤 텍스트 매칭 전략이 사용됩니까? 데이터 집합이 얼마나 엄격하게 캐시됩니까? 캐시하기에 너무 큰 경우 어떻게해야합니까?

  3. 씩 클라이언트 데스크톱 응용 프로그램 대 AJAX를 사용하는 웹 클라이언트에 대해 이야기 할 때 고려해야 할 전략은 무엇입니까?

특정 시점에서 필자는 특정 .NET 구현을 살펴볼 것이지만이 단계에서는 전략에 더 관심이 있습니다.

답변

3

첫 번째 질문을 해결하려면 다음을 수행하십시오. 특정 성능 고려 사항을 고려해야합니다. 과부하가 걸리지 않는 빠른 데이터베이스 (로컬 데이터베이스 일 수도 있음)에 대한 대기 시간이 낮은 광대역 연결을 사용하는 시스템은 서버를보다 적극적으로 폴링하여 최종 사용자에게 완전히 다른 자동 완성 환경을 제공 할 수 있습니다.

인터넷 응용 프로그램의 경우 일반적으로 서버 기반 자동 완성이 시작되기 전에 사용자가 3자를 입력해야한다는 것이 일반적입니다. 이는 경우에 따라 완전히 변경됩니다.

이 질문은 세 번째 질문의 일부분이라고 생각합니다.

+0

3 개의 문자가 유용한 규칙이지만 검색하기 전에 사용자가 다시 입력을 시작하면 어떻게됩니까? – flipdoubt

+0

큰 결과 집합을 반환하고 클라이언트 쪽에서 마지막 응답 이후에 입력 한 문자가있는 하위 집합으로 필터링 할 수 있습니다. 자동 완성이 응답하는 것보다 빠르게 타이핑하고 타이핑하는 경우 항상 서버가 제공 한 제안 이외의 방법으로 수정하면 자동 완성 기능이 도움이되지 않습니다. – jball

관련 문제