2010-06-14 2 views
1

MySQL 테이블에 InnoDB를 사용하고 있으며 LIKE 및 RLIKE/REGEXP를 사용하는 쿼리는 많은 시간이 걸릴 수 있습니다.InnoDB를위한 인덱싱 된 MySQL 인덱싱/검색 대체?

나는 Spinx을 시도했습니다, 나는 간격으로 상황에 인덱스를 다시 할 필요를 제외하고는, 잘 작동합니다. 매분마다 색인을 다시 생성 할 수 있지만 1) 레코드가 항상 색인 된 상태로 유지되는 스핑크스 또는 2) 레코드가 항상 색인 된 상태로 유지 될 스핑크스 이외의 다른 소프트웨어가 있는지 궁금합니다. 그 바로 삽입하거나 기록을 갱신시 인덱스가 업데이트된다

나는 그것을 원한다. Apache Lucene 프로젝트의

답변

3

하나는 가장 잘 아마 할 것입니다.

자연어 처리를위한 선택 기능을 포함하여 텍스트 내용에 역 색인을 작성하도록 설계되었습니다. Lucene은 원래 Java로 작성되었지만 지금은 .NET으로 포팅 된 기본 프로젝트입니다. 이것은 매우 효율적인 파일 기반 저장소를 사용합니다.

더 큰 인덱스의 경우 기본적으로 당신이 나머지-FUL 서비스를 통해 액세스 할 수 있습니다 루씬의 서비스 기반 버전 인 SOLR 프로젝트가있다. 또한 여러 시스템에 걸쳐 인덱스를 샤딩하는 등의 확장 옵션도 있습니다.

0
  1. 당신은 확실히 당신의 텍스트를 전체 텍스트로 인덱싱되어 있습니까?
  2. regex 대신에 like 또는 boolean match를 사용하려고합니다.
+0

정반대; 나는 그렇지 않다고 확신한다. InnoDB는 FULLTEXT 인덱스를 제공하지 않습니다. 내 UI가 저장 프로 시저를 사용하는 REGEX 검색을 제공하기 때문에 정규식 대신 부울 일치를 수행 할 수 없습니다. LIKE (또는 이에 상응하는)도 요구 사항입니다. –