Solr을 고려해야 할 시기
저는 전체 텍스트 검색, 히트 하이라이팅, 페이스 검색 등 검색과 관련하여 흥미로운 작업을 수행해야 하는 애플리케이션을 개발하고 있습니다.
데이터 세트는 각각 20-30개의 필드가 있는 3000-10000개의 레코드이며 모두 MySQL에 저장됩니다.사이트의 트래픽 프로파일은 작은 크기의 미디어에 있을 가능성이 높습니다.
MySQL에서는 이러한 모든 요구 사항을 (어두운) 충족할 수 있지만, 언제(데이터 크기 및 트래픽 수준 측면에서) Solr 또는 Spinks와 같은 보다 집중적인 기술을 검토할 가치가 있습니까?
이 질문은 모든 측면에서 매우 폭넓은 답변을 요구합니다.한 시스템이 특별한 사용 사례에 대해 다른 시스템보다 우수할 수 있는 매우 확실한 세부 사항이 있지만, 여기서는 기본 사항을 다룹니다.
저는 거의 같은 방식으로 작동하는 여러 검색 엔진에 대한 예로 솔을 전적으로 다룰 것입니다.
몇 가지 확실한 사실부터 시작하겠습니다.
Solr/Lucene을 보안 데이터베이스로 사용할 수 없습니다.이유는 여러 가지 사실이 있지만 대부분 복구 옵션 누락, 산성 트랜잭션 부족, 합병증 가능성 등으로 구성됩니다.soler를 사용하기로 결정한 경우 SQL 테이블과 같은 다른 소스에서 인덱스를 채워야 합니다.사실 solr은 여러 테이블과 관계의 데이터를 포함하는 문서를 저장하는 데 이상적이며, 그렇지 않으면 복잡한 조인을 구성해야 합니다.
Solr/Lucene은 충격적인 텍스트 분석 / 스밍 / 전체 텍스트 검색 스코어링 / 퍼지 기능을 제공합니다.MySQL로는 할 수 없는 것들.사실 MySql의 전체 텍스트 검색은 MyIsam으로 제한되며 점수 매기는 것은 매우 사소한 것이고 제한적입니다.필드 가중치 부여, 특정 메트릭에 대한 문서 증가, 구문 근접성에 기반한 점수 결과, 정확도 일치 등은 거의 불가능할 정도로 매우 어려운 작업입니다.
Solr/Lucene에 문서가 있습니다.관계와 프로세스를 저장할 수 없습니다.물론 어떤 문서의 다중값 필드 내에서 다른 문서의 키를 색인화할 수 있습니다. 이렇게 하면 실제로 1:n 관계를 저장하고 n:n을 얻는 두 가지 방법으로 모두 수행할 수 있지만 데이터 오버헤드가 발생합니다.오해하지 마세요. 여러 가지 목적을 위해 완벽하게 훌륭하고 효율적입니다(예: 제품의 유통업체를 저장하고 특정 유통업체에서 사용할 수 있는 부품만 검색하려는 일부 제품 카탈로그).그러나 HAS / HAS NOT를 사용하면 가능성의 끝에 도달합니다."3개 이상의 디스트리뷰터에서 사용할 수 있는 모든 제품 가져오기"와 같은 작업은 수행할 수 없습니다.
Solr/Lucene은 Facetting 기능과 검색 후 분석 기능이 매우 좋습니다.예를 들어, 40000번의 조회 수를 기록한 광범위한 검색 후 이 필드 값과 해당 필드 값의 조합으로 검색을 조정한 경우 3번의 조회 수만 표시할 수 있습니다.MySQL에서 추가 쿼리가 필요한 작업은 효율적이고 편리하게 수행됩니다.
그래서 요약해보죠.
Lucene의 힘은 텍스트 검색/분석입니다.또한 역지수 구조 때문에 정신적으로 매우 빠릅니다.당신은 정말로 많은 후처리를 할 수 있고 다른 요구를 충족시킬 수 있습니다.문서 지향적이고 SPARQL과 같은 "그래프 쿼리"가 없지만 기본적인 N:M 관계를 저장하고 쿼리할 수 있습니다.응용 프로그램이 텍스트 검색에 중점을 두고 있다면 매우 복잡한 다차원 범위 필터 쿼리와 같은 좋은 이유가 없다면 Solr/Lucene을 선택해야 합니다.
텍스트 검색이 아니라 텍스트를 입력하지 않고 무언가를 가리키고 누를 수 있는 오래된 관계형 데이터베이스가 더 나은 방법일 수 있습니다.
Solr 사용:
- 데이터베이스에 스트레스를 주지 않을 것입니다.
- 전체 텍스트 검색을 수행합니다.
- 번개처럼 빠른 검색 결과를 수행합니다.
저는 현재 MySQL을 메인 데이터스토어로, Solr을 검색엔진으로 하는 월간 500만 사용자의 뉴스 웹사이트를 운영하고 있습니다.
Solr은 Mysql로 달성하기 어려운 전체 텍스트 인덱싱을 위해 마법처럼 작동합니다.Mysql과 Solr을 함께 사용할 수 있습니다.CRUD 작업의 경우 mysql, 검색의 경우 Solr.
저는 이전에 검색을 위해 Solr을 사용하는 인도 최고의 부동산 온라인 분류 포털 중 하나와 함께 작업한 적이 있습니다(이전에는 Mysql을 사용했습니다).마이그레이션으로 검색 시간 다양체가 감소했습니다.
Solr은 Mysql과 쉽게 통합할 수 있습니다.
- Solr 전체 데이터 가져오기는 Mysql 테이블에서 Solr 컬렉션으로 데이터를 가져오는 데 사용할 수 있습니다.
- Solr 델타 가져오기를 짧은 빈도로 예약하여 Mysql에서 Solr 컬렉션으로 최신 데이터를 로드할 수 있습니다.
언급URL : https://stackoverflow.com/questions/4960952/when-to-consider-solr
'programing' 카테고리의 다른 글
JSON 데이터를 MySQL로 가져와서 웹 페이지에 시각화하는 방법은 무엇입니까? (0) | 2023.08.30 |
---|---|
Git에서 동일한 커밋의 파일에 현재 커밋 해시를 쓰는 방법은 무엇입니까? (0) | 2023.08.30 |
반사 클래스를 사용하여 개인/보호된 정적 속성을 설정할 수 있는 방법이 있습니까? (0) | 2023.08.30 |
Oracle Date 데이터 유형, 'YYYY-MM-DD HH24:MI:SSTMZ' ~ SQL (0) | 2023.08.30 |
다음을 사용하여 요소 뒤에 공백("")을 추가합니다. (0) | 2023.08.30 |