2010-07-21 5 views
1

현재 2 밀리미터 이하의 레코드를 매우 빠르게 검색해야하는 응용 프로그램이 있습니다.확장 가능한 프리 텍스트 및 매개 변수 검색 (C#)

검색은 다양한 기능/계산 & 정렬과 함께 넓은 범위의 자유 텍스트 필드와 여러 범위의 정수/소수 필드를 모두 검색해야합니다.

현재 우리는 내장 된 freetext 엔진을 사용하는 큰 MSSQL 데이터베이스와 트랜잭션 테이블에서로드를 이동시키는 일부 복제를 처리하고 있습니다.

그러나 예상했던대로이 솔루션은 확장 성이 가장 뛰어납니다.

작은 Lucene 기반 문서 저장소를 작성했으며 일반적으로 텍스트 검색이 1/2 초 (100k 레코드)보다 오래 걸리지 않으면 서 결과에 많은 인상을 받았습니다.

힘든 부분은 매개 변수 검색입니다. Lucene이 기본 범위 일치를 수행한다는 것을 알고 있습니다. 그러나 우리는 더 강력한 것을 필요로한다고 생각합니다.

강력한 쿼리 기능을 가진 db4o를 사용하여 약간의 테스트 데이터베이스를 만들었지 만 이러한 쿼리는 매우 느립니다. SQL은 프리 텍스트 & 파라 메트릭 검색에 약 1.5 초가 걸립니다.

또한 데이터베이스의 업데이트 해상도는 10 분 미만이어야하며 레코드의 약 15 %는 매일 변경됩니다. 우리의 SQL 서버는 현재 이것을 처리하고 있지만 삐걱 거리기 시작합니다. 적절한 기술에 관한 안내는 &입니다.

건배, 데이브

+0

"더 강력한 것이 필요합니다."라는 의미를 분명히 할 수 있습니까? Lucene 파라 메트릭 검색에 대해? 이것은 매우 강력하며 대부분의 쿼리 요구 사항을 수용해야합니다. – Mikos

+1

db4o가 100k 개체에서 15 초가 걸리는 것은 우리 데이터베이스처럼 들리지 않습니다. db4o 포럼에 코드를 게시하고 싶습니까? http://developer.db4o.com/Forums.aspx 속도 향상을 위해 무엇인가 할 수 있다고 확신합니다. –

+0

SQL Server의 전체 텍스트 검색을 사용하지 않는 이유는 무엇입니까? –

답변

0

는 링크드 인에 찾고 가치가있을 수도의 facted 검색어를 확장하는 bobo라는 추가 기능 루씬에 썼다. 하지만 엄청나게 엄청난 인덱스가 있다면 보보가 정말로 필요하다고 생각합니다. 100k 문서를 검색하는 데 오랜 시간이 걸릴 경우 정말 이상한 일이 일어나야합니다.