2009-10-08 2 views
0

그래서 두 개의 데이터베이스가 생산 목적을위한 데이터베이스와 개발 목적을위한 데이터베이스라고 가정 해 보겠습니다.sql server - full-text search

개발 데이터베이스를 복사 할 때 전체 텍스트 카탈로그가 제대로 복사되지 않아서 카탈로그를 직접 만들었습니다. 우리는 모든 테이블과 색인을 일치시키고 데이터베이스를 만들었고 검색 기능도 제대로 작동하고있는 것 같지만 (아직 완전히 테스트되었습니다).

그러나 이전 카탈로그에는 수동으로 만든 폴더보다 훨씬 많은 파일이 있습니다. 괜찮습니까? 나는 그들이 정확히 같은 수의 파일을 가지고있을 것이라고 생각했다. (그러나 크기는 다를 수있다.)

+0

어떤 버전의 SQL Server입니까? – MaxiWheat

+0

그것은 SQL Server 2005입니다. – TPR

답변

0

처음으로 ... 전체 텍스트 검색을 사용할 때 수동으로 마법사를 만들지 않으려 고 제안한다. . 나는 단지 일부 데이터 이상을 놓치는 것에 대해 궁금해하고 있습니다. 왜 인덱스를 재 작성하지 않는 것이 좋을까요?

두 번째 ... 다른 선택의 여지가 없다면 SQL Server의 프리 텍스트 기능을 사용하지 않는 것이 좋습니다. 나는 freetext를 크게 믿었지만 Lucene (.net) 인덱스를 만들고 SQL Server에서 인덱스를 생성하고 검색하는 것과 비교하여 검색했습니다. Lucene 인덱스를 만드는 것과 비교하여 SQL Server 인덱스를 만드는 것은 상당히 느리고 유지 관리가 어렵습니다. Lucene과 비교할 때 SQL Server 인덱스를 검색하는 것은 상당히 정확하지 않습니다. Lucene은 데이터 검색을 위해 개인 Google을 보유한 것과 같습니다.

어떻게? Lucene에서 데이터를 검색하고 (검색해야하는 데이터 만) 색인을 생성하는 데이터의 기본 키를 나중에 사용하십시오. 그런 다음 사용자 언어와 Lucene (.net) API를 사용하여 색인을 검색하십시오 (이 주제에 대한 많은 기사). 검색 결과에서 PK를 반환했는지 확인하십시오. 관심있는 레코드를 확인한 후에는 반환 된 PK를 기반으로 나머지 데이터 및/또는 관련 데이터를 가져올 수 있습니다.

Gotchas? 인덱스를 업데이트하는 것이 훨씬 빠르고 쉽습니다. 그러나 색인을 작성하고, 색인을 갱신하고, 색인을 검색하기 위해 색인을 작성해야합니다. 슈퍼 쉽 ...하지만 여전히 ... 거기에 마법사 또는 한 손으로 코딩이 없습니다! 또한 색인은 파일 시스템에 있습니다. 파일이 열려 있고 검색 중이며 다른 검색을 위해 파일을 다시 열려고하면 분명히 몇 가지 문제가 발생할 것입니다. 따라서 이러한 인덱스를 열고 읽는 중 일부 인프라를 작성해야합니다.

SQL Server에서 어떻게 도움이됩니까? Lucene 검색을 CLR 함수 또는 데이터베이스에 설치할 수있는 proc로 간단하게 래핑 할 수 있습니다.이 함수는 마치 t-SQL 쿼리의 고유 한 것처럼 사용할 수 있습니다.

+0

아니요, 수동으로 마법사 단계를 무시한 것은 아닙니다. 나는 모든 테이블과 인덱스를 직접 선택해야한다는 것을 의미했습니다. :) ... 카탈로그와 데이터베이스가 복사되는 것과 반대입니다. – TPR

관련 문제