5M 행의 대형 데이터 세트가 있습니다. 데이터 세트의 필드 중 하나는 'article_title'입니다. 사이트에서 작성중인 자동 완성 기능을 실시간으로 검색하고 싶습니다.모든 DB에서 '% phrase %'검색을 빠르게 수행 할 수 있습니까?
나는 잠재적 인 DB 솔루션으로 MySQL과 MongoDB를 실험 해왔다. 'something %'와 같이 색인을 사용할 때 둘 다 잘 수행되지만 '% something %'처럼 내에서 내의 문자열을 일치시켜야합니다.
MySQL과 MongoDB는 모두 전방 검색을 사용하는 인덱스로 0.01 초, 전체 문자열 검색으로 약 6 초가 걸렸습니다.
이 문제에 대한 일반적인 접근 방식은 무엇인지, 전체 DB에서 문자열 -in- 문자열 유형 검색을 검색해야한다는 것을 알고 있습니다. Solr과 Sphinx는이 문제에 대해 지나치게 심한 것처럼 보이므로 가능한 경우 사용하지 않는 것이 좋습니다.
RAM이 2GB이고 SSD가 40GB 인 상자를 가지고 있다면 (응답 시간은 얼마 남았습니까?) 서브 초 응답 시간을 얻을 수 있습니까? 미리 감사드립니다.
-
업데이트 : 나는 전체 텍스트 인덱스를 시도하고 결과가 매우 빠른 반면, 그것은 정말 문자열에서 문자열 검색을 만족하지 않는다 ("presiden"는 "대통령을"일치하지 않음) . string-in-string과 5M 행 데이터 세트를 일치시키는 방법을 찾고 있습니다.
MySQL (버전, 엔진, 구조체, 사용 된 쿼리) 및 MongoDB (cfg, 버전, 클라이언트)에 대한 추가 정보 제공 – kwarunek
MySQL 5.1.7, Mongod 2.4.5. MySQL 테이블은 독점적으로 읽기 전용이므로 성능만을 찾고 있기 때문에 MyISAM입니다. – soulkphp
http://stackoverflow.com/questions/17973889/what-is-the-best-optimization-technique-for-a-wildcard-search-through-100-000-re/18025870#18025870도 확인해야합니다. 제목, 신체 내용에 대해서는 작동하지 않음 – rlb