2011-11-24 5 views
2

entityId에 매핑되는 문자열 (약 5000 개의 응용 프로그램 이름)에 대한 하위 문자열 검색을 구현하는 가장 좋은 방법은 무엇이 있을까요?id에 매핑되는 문자열에서 하위 문자열 검색

하나 이상의 문자를 입력 할 때 사용자에게 검색된 제안을 넣을 수 있도록 구현하고 싶습니다. 예를 들어, 검색 할 때 쿼리 된 하위 문자열로 시작하는 모든 엔터티를 제안 할 수 있기를 원합니다. .

DB에서 자주 검색하는 것을 피하기 위해 응용 프로그램 범위 자체에 저장할 것을 기대합니다.

+0

추가 컨텍스트 정보가 필요합니다. 다른 방식으로 말하자면, 도대체 당신이 말하는 것은 무엇입니까? –

+0

엔티티는 문자열의 어느 위치 에나있을 수 있습니까? 문자열은 얼마나 오래있을 수 있습니까? –

답변

2

trie 구조가 필요합니다. 사용자가 문자를 입력하면 이미 입력 한 노드로 매핑 된 노드 아래에 리프 노드의 하위 집합을 반환 할 수 있습니다.

Google은 사용자가 아마도 적응할 수있는 trie implementation을 가지고 있습니다.

+0

나는 이런 식으로 생각하고있었습니다.하지만 이것은 다행스럽게도 직접 ​​사용할 수있는 생산 품질의 코드가 아닙니다 ... –

+0

부여되었습니다. 여기에 또 다른 구현이 있습니다. http://stevedaskam.wordpress.com/2009/05/28/trie-structures/ - 구현을 철저히 검색하지 않았습니다. 아마도 Apache Commons 라이브러리에 하나가 있을까요? – mcfinnigan

+0

http://code.google.com/p/patricia-trie/ –

1

정확히 무엇이 필요한지 잘 모르겠지만 (미안하지만) 나는 Apache Lucene을 사용하여 문자열을 검색/색인 생성/캐싱하고 데이터베이스 액세스를 줄임으로써 성공을 거두었습니다.

Apache Lucene's Site을 살펴볼 수 있습니다.

는 도움이되기를 바랍니다.

관련 문제