2012-04-06 4 views
1

키워드 검색 기능을 효율적으로 제공 할 수있는 데이터 구조를 만들어야합니다.키워드 검색을위한 데이터 구조에 대한 제안

내 메트릭은 다음과 같습니다

  1. 년경 50 제품.
  2. 제품당 20 개 이상의 키워드 (추측).
  3. 제품은 약 10 자리의 ID로 식별되지만 앞으로 진행될 임의의 ASCII 코드 일 수 있습니다.

가능한 경우 메모리에 데이터 구조를 맞추려고합니다. 나는 서버에있을 것이므로 상당한 메모리 가용성을 가정 할 수 있습니다.

속도가 중요합니다. LIKE 데이터베이스 쿼리를 사용하면 해결할 수 없습니다.

데이터 구조에 대한 아이디어가 있습니까?

내 생각 :

TrieMap

키워드에 대한 매우 효율적인하지만 너무 심각하게 배고픈 메모리를 어떤 잎에 걸려 제품 ID의 목록이있을 필요가있다. 그걸 도울 수있는 아이디어가 있습니까?

압축

다양한 압축 방식이 마음에 와서 그러나 아무도는 중요한 가치로 뛰어 없습니다.

다른 사람이이 같은 것을 넣었습니까? 당신의 경험을 공유 할 수 있습니까?

데이터가 변경 될 수는 있지만 자주는 아닙니다. 변화를 수용하기 위해 매일 구조를 재건하는 것이 합리적 일 것입니다.

답변

2

lucene을 메모리 또는 파일 시스템 색인으로 사용하는 것에 대해 생각해 보셨습니까?

매우 빠르며 앞으로 발생할 수있는 추가 요구 사항에 대한 여지가 많이 있습니다.

+0

lucene으로 어떻게하는지 살펴 보았지만 Google 검색이 가장 좋은 방법 인 것처럼 보입니다. http://javatechniques.com/blog/lucene-in-memory-text-search-example/ – pimaster

+0

감사!! Lucene과 함께 기존의 끔찍한 검색 메커니즘을 완전히 대체하는 데는 저보다 더 많은 시간이 필요합니다. 진정으로 예외적 인 패키지 - 언뜻보기에는 안정적입니다. – OldCurmudgeon

+1

BTW - Lucene 튜토리얼 문서 [여기] (http://alias-i.com/lingpipe-book/lucene-3-tutorial-0.5.pdf)가 있습니다. – OldCurmudgeon

관련 문제