2009-08-10 4 views
7

SQLite3에는 FTS1, FTS2 및 FTS3이라는 3 개의 다른 전체 텍스트 검색 엔진이 제공됩니다. 웹 사이트에서 제공되는 설명서에 따르면 FTS1은 안정적이며 FTS2는 개발 중이므로 FTS2를 사용해야합니다. 보기 나는 CVS에 있고 FTS2 대 문서화되지 않은 온라인 사용 FTS3을 찾았습니다. 모든 텍스트 검색 엔진에는 내가 알 수있는 것만 큼 가까운 곳에서 병합 소스가 제공되지 않습니다.SQLite3에 사용할 전체 텍스트 검색 패키지는 무엇입니까?

그래서, 내 질문 : SQLite에서 전체 텍스트 인덱싱을 위해이 세 가지 엔진 중 어느 것을 사용해야합니까? 또는 대신 Sphinx와 같은 타사 도구 또는 Lucene의 사용자 지정 솔루션을 사용해야합니까?

답변

4

최근에는 전체 텍스트 솔루션도 검토했습니다. SQLite는 사실상 선택의 여지가없는 것처럼 보입니다. 무엇을 선택하든 다양한 FT2, FT3 등의 솔루션이 성숙 해짐에 따라 다시 설계해야합니다. 따라서 총알을 물고 앞으로는 전체 텍스트 기술 변경에 발 맞춰 더 많은 개발 작업을 수행해야한다고 가정합니다.

스핑크스 검색에는 아직 SQLite에 대한 직접적인 지원이 없습니다. 현재 MySQL 및 PostgreSQL 만 지원합니다 (2009 년 8 월 ca.). 따라서 자신의 SQLite 커넥터를 해킹하거나 SQLite 데이터를 MySQL 또는 PostgreSQL로 마이그레이션 한 다음 Sphinx Search를 사용하여 데이터를 인덱싱해야합니다. 제 생각에 누군가가 Sphinx Search 패치를 사용하여 Firebird를 지원하고 있다고 생각합니다. 소매를 감쌀 경우에는 그렇게 힘들지 않을 수도 있습니다.

또한 스핑크스 검색에는 점진적으로 색인에 데이터를 추가하는 데 몇 가지 제한 사항이 있습니다. 문서를 사용하기로 결정하기 전에 문서를 1 시간 정도 읽어야합니다.

Lucene에서 SQLite 데이터를 직접 인덱싱하는 방법을 모르겠습니다. Lucite 인덱스에 행을 한 번에 하나씩 추가하여 SQLite 데이터의 일괄 처리를 처리하는 코드를 직접 작성해야합니다. 이것은 데이터베이스가 무엇이든 관계없이 Lucene을 사용하는 것 같습니다.


갱신 :Solr는 루씬을위한 훌륭한 동반자 기술입니다. Solr은 모든 JDBC 데이터 소스에서 쿼리 결과 데이터를 대량로드하는 기능을 포함하여 검색 엔진에 많은 기능을 제공합니다.

+1

나는 외부 솔루션보다 sqlite3 fts3가 더 좋습니다. 움직이는 부분이 적습니다. fts2에서 fts3으로 전환하는 것은 Sphinx를 업데이트 제한 또는 다른 외부 솔루션과 통합하는 것만큼 어렵지 않습니다. –

+1

@ See : 동의합니다 - 다소. fts3은 SQLite에 내장되어있는 반면 Sphinx Search는 또 다른 소프트웨어를 설치해야했습니다. 그러나 fts3은 기본 빌드에 내장되어 있지 않으므로 직접 SQLite를 다시 컴파일해야합니다. 그리고 fts3은 * 가상 테이블 * 유형입니다. 원본 테이블에서 fts3 테이블로 데이터를 수동으로 복사해야합니다. 당신이 어떻게하는지에 관계없이 움직이는 부분이 있습니다. –

+0

FTS3은 FTS4와 마찬가지로 공식 DLL의 일부였습니다. –

6

3.6.21부터 FTS3은 잘 문서화되어보다 공식적으로 볼 수있는 상태가되었습니다.

FTS3은 Windows에서 표준 sqlite DLL 빌드의 일부이며, 병합 소스에 대해서는 확실하지 않습니다.

우리는 특별한 문제없이 약 1 년간 생산에 사용 해왔다.