검색 API와 Apache Solr 검색


34

내가 사용하고 아파치 SOLR 검색 드루팔 6 모듈과에서 찾고 검색 API 설치할 드루팔 7. 나는 여기서 약간의 토론을 보았지만 하나를 선택 해야하는 이유를 찾고 있습니다.

다른 것을 선택해야 할 이유가 있습니까? 그렇다면 왜 또는 왜 안됩니까? Search API에 복잡성 문제 및 / 또는 성능 문제가있을 수 있다고 들었습니다. 이것이 사실입니까?


나는 다국어 검색을 위해 solr을 제안하지 않을 것입니다. 검색이 다국어 solr 검색이 얼마나 중요한지에 따라 시간이 많이 걸릴 수 있습니다. 설치가 어려울 수 있습니다. 다국어 검색을 위해서는 언어가 solr에 의해 지원되어야합니다. 언어에 맞는 문법 규칙이 있습니다. 또한 저렴한 공유 호스팅을 사용할 수 없도록 java 및 solr이 설치되어 있어야합니다. 검색 엔진을 개발중인 경우이를 사용할 수 있습니다. 개발 리소스를 계산하는 경우 유료 Google 사이트 검색이 더 좋습니다. 나는 심지어 gss modulep의 공동 유지 자입니다
ram4nd

왜 그런가요? 벤치 마크가 있습니까?
giorgio79

죄송합니다. 설치가 어려울 수 있습니다. 다국어 검색을 위해서는 언어가 solr에 의해 지원되어야합니다. 언어에 맞는 문법 규칙이 있습니다. 또한 내가 그것을 살펴 보았을 때 개발 상태에 있고 더 많은 작업이 필요한 모듈이 있습니다. 그러나 가장 빠른 검색 엔진입니다. 따라서 검색 기능이 얼마나 중요한지 스스로에게 물어봐야합니다. 또한 저렴한 공유 호스팅을 사용할 수 없도록 java 및 solr이 설치되어 있어야합니다.
ram4nd

Search API와 비교하여 Apache Solr에 와야했던 것 중 하나는 다중 선택 필터 검색이었습니다. 검색 API로는 불가능 해 보였습니다. Solr에이 옵션이있는 것 같습니다.
user219492

다중 사이트 지원에 대해 언급하겠습니다. SearchAPI에는 다중 사이트 지원이 없습니다 (여러 사이트 컨텐츠를 저장하기 위해 동일한 SOLR 인덱스 사용). 대신 Apachesolr은 다음을 수행 할 수 있습니다. 1. 동일한 SOLR 인덱스에 여러 sistes 참가자를 인덱싱합니다. 2. 특정 사이트별로 결과를 필터링합니다. 3. 로컬 사이트에서만 검색을 수행합니다. 다른 사이트의 결과를 필터링합니다
thePanz

답변:


19

2015 년 현재 Search API와 Apache Solr Search 모듈을 숫자와 비교할 수 있습니다.

                   | Apache Solr Search  | Search API
Posted in:         | 2007                | 2010
Downloads:         | >2k                 | >20k
Reported installs: | >21k                | >64k
Total bugs:        | >1200               | >600
Active bugs:       | >200                | >170
Commits:           | >1.3k               | >1.5k

명확한 선택을 나타냅니다. Search API는 3 년 후에 개발되었으며 경쟁 업체를 활용할 수있었습니다.

더욱이 Search API는 매우 다양하고 유연한 아키텍처를 제공하며 더욱 적극적으로 유지 관리되고 있습니다. 더 중요한 것은 Apachesolr에없는 최신 Drupal 8 및 Solr 5.x를 이미 지원한다는 것입니다 .

Search API는 새롭게 시작되었으며 Views 지원 (Apachesolr의 경우 추가 모듈이 필요함)을 포함하여 구성이 더 유연합니다. 기능을 확장하는 많은 모듈도 있습니다.

둘째, 이러한 모듈의 아키텍처 차이로 인해 커뮤니티가 두 번 해결하는 문제를 피하기 위해 현재 두 프로젝트 사이에 다음과 같은 결합 된 노력이 있습니다.

  • 패싯 API (필터라고도 함) 를 통해 패싯 블록을 표시하는 일반적인 방법 작성
  • 공통 스키마 및 solrconfig.xml 구성 파일
  • 두 관리자가 함께 작업하여 연결 클래스를 Apache Solr Search 모듈에서 Search API로 마이그레이션했습니다.

출처 : Acquia의 Drupal 8 에서 Search & Solr을위한 Battleplan

동일한 환경에서 두 모듈을 모두 사용하지 않는 것이 좋습니다.

차이점에 대한 추가 기술 분석은 아래 세부 정보를 확인하십시오.

검색 API

API 개요 :

  • 손쉬운 검색을위한 프레임 워크
  • 데이터 소스 및 백엔드 구현의 요약
  • 확장 기능이있는 대규모 에코 시스템 (예 : 백엔드)
  • 패싯 API 통합
  • 엔터티 API를 기반으로

    • 메타 데이터 제공
    • 인덱스 및 서버 구성에 사용

확장 기능 :

  • 검색 API 자동 완성
  • 첨부
  • 저장된 검색
  • 위치
  • 예쁜 패싯 경로
  • 슬라이더 (검색 API 범위)
  • 그리고 더 많은.

기본 구조 :

Search API Solr 모듈의 기본 구조

색인 기능 :

  • 다른 데이터 소스
  • 하나의 데이터 소스 : 엔티티
  • 엔터티 API를 기반으로 :

    • 각 속성을 색인 할 수 있습니다
    • 관련 엔터티의 속성을 인덱싱 할 수 있습니다

색인-필드를 구성하는 방법 :

Search API Solr에서 색인-필드를 구성하는 방법

검색 API 뷰 :

  • 전체 뷰 지원
  • 엔터티의 속성 표시
  • 색인화 된 필드를 필터, 인수 또는 정렬로 사용하십시오.
  • Entity API의 뷰 통합을 기반으로하는 대부분의 코드
  • 기본적으로 : 엔티티로드를 통해 검색된 데이터

    • 무시 가능 (서버의 "Solr에서 데이터 검색"설정)
  • 대안 : 검색 API 페이지

검색 API 레시피 :

  • 인덱스 및 서버를위한 CRUD 후크
  • 추가 고리

    • 데이터 소스
    • 백엔드
    • 데이터 변경
    • 프로세서
  • 항목을 색인 할 때 발생하는 후크

  • 검색을 실행할 때 훅 발생

아파치 솔

확장 기능 :

  • 첨부 파일 (미디어 지원 없음, 다른 엔티티에 첨부하기위한 사용자 지정 코딩)
  • 위치 (Apachesolr geo, Apachesolr 위치)

Apachesolr 레시피 :

  • 오픈 소스 엔터프라이즈 검색 플랫폼
  • 아파치 재단
  • 전체 텍스트 검색, 강조 표시, 패싯 검색, 클러스터링, 풍부한 문서 처리
  • 분산
  • 복제 / 확장 가능
  • 자바
  • REST HTTP 및 XML / JSON 및 기타 응답
  • 관계없는

출처 : 검색 API 및 Apachesolr 슬라이드 쇼


참조 :


멋진 글씨, 감사합니다! 질문 1 : 왜 같은 환경에서 두 모듈을 사용하지 않는 것이 좋습니까? 질문 2 :이 시점에서 모듈 간의 성능 차이를 무시할 수 있습니까 (지금은 검색 API가 포함 된 Search API를 통해 여러 필드를 인덱싱 할 수 있으므로 검색 결과가 포함 된 썸네일 이미지를 표시하는 데 엔티티로드가 더 이상 필요하지 않음)?
Jordan Magnuson 2016 년

@JordanMagnuson 1. 두 모듈 모두 호환되지 않으며 대부분의 웹 사이트가 하나의 Solr 검색 인스턴스 만 처리하므로 두 모듈을 동시에 사용하지 않으므로 두 모듈을 모두 사용하는 것은 합리적이지 않습니다. 작업을 복제하지 않아도됩니다. 예를 들어 일부 검색보기를 작성해야하는 경우 두 모듈 모두보기 모듈과 별도의 통합을 제공하므로 두 개의보기를 작성해야합니다.
kenorb

@JordanMagnuson 2. 성능에 대해 확신하지 못합니다. 특정 버전이 없었으며 아마도 모든 버전이 변경되었을 것입니다 (아파치 솔러를 아주 오래 전에 사용했습니다). 뷰와 패싯을 사용하는 경우 일반적으로 뷰 캐시 메커니즘을 사용하므로 시간을 많이 처리 할 필요는 없으며 물론 memcached, APC / XCache 등을 신경 쓰지 않아도됩니다. 성능은 실제로 사이트 구조와 각 모듈이 상호 작용하는 방식에 따라 달라집니다 다른.
kenorb

검색 API보다 사용하는 것이 재미, 아직 Acquia의 자체는 아파치 SOLR 모듈을 사용하는 것이 좋습니다 docs.acquia.com/acquia-search/search-api#animated
AlxVallejo

@AlxVallejo 나는 그들이 Acquia Cloud (공유) Solr 인스턴스를 지원하기 위해 안정적이고 잘 작성된 Apachesolr 구성 파일을 가지고 있기 때문에 프로덕션에 권장한다고 생각합니다. 따라서 관련된 위험에는 구성 파일을 더 자주 업데이트해야하는 것이 포함되었습니다. 그들은 우리의 (대규모) 프로젝트에도 추천했지만 짧은 시간 동안 놀고 요구 사항을 확인한 후 추천을 Search API로 변경했습니다. 그들은 안정적인 설정 파일을 가지고 있지 않았지만 우리는 우리 자신을 제공했습니다.
kenorb

24

나는 둘 다 사용해 보았고 이것을 말할 수 있습니다 : 그것은 당신의 상황에 달려 있습니다.

현재 ApacheSolr 통합 모듈의 안정적인 7 릴리스는 노드 만 색인 할 수 있습니다. 당신은 당신이 색인을 필요 비 노드 실체가 있다면 그래서, 당신은 진행에 여전히를 사용할 필요가 multientity의 그것을 위해 패치. ApacheSolr Integration은 올바르게 구성된 경우 많은 다른 컨텐츠 데이터를 저장할 수 있습니다.

검색 API는 엔터티를 색인화하고이를 위해 많은 훌륭한 자료를 작성합니다. 그러나 Search API는 검색중인 데이터의 ID 만 가져옵니다. 즉, ID 이외의 다른 데이터를로드하려면 entity_load가 필요하며 데이터베이스에 충돌하거나 배치 한 캐싱 계층이 필요합니다. 검색 량이 많은 사이트의 경우 이것이 가장 최적화 된 솔루션이 아닐 수 있습니다.

다음 은 drupalcon chicago에서 ApacheSolr Integration 모듈에 대한 훌륭한 프레젠테이션입니다. Search API에 대한 16 분입니다.


멋진 개요. 정확히 내가 알고 싶은 것. 감사!
hross

이것이 귀하의 질문에 성공적으로 답변 된 경우 답변으로 플래그를 지정할 수 있습니까? 감사!
LSU_JBob

1
당신이 궁금해하는 사람들을 위해, multientity는 이제 아파치 solr 통합의 dev 브랜치에 있으므로 다음 베타 버전에서 나올 것입니다.
LSU_JBob

2
이 스레드를 읽는 사람들에게. 성능에 대한 완화 요소 중 하나는 검색 API를 사용하여 노드 데이터를 색인화하고 검색 할 수 있다는 것입니다. 여기에 성능 토론이 있습니다 .
hross

1
이 답변은 최신 정보가 아닙니다. drupal.org/node/1999392를 살펴보십시오. search_api_solr에는 이제 다중 사이트 옵션이 있으며 NID뿐만 아니라 반환도 허용합니다. 2014 년 search_api_solr의 설치 기반이 크게 성장하여 아파치 솔러의 D7 사용을 앞질렀습니다.
Duncanmoo

2

나는 당신이 정말로 두 가지를 모두 시도하고 정보에 근거한 결정을 내려야한다고 생각합니다. 그러나 apachesolr에는 여전히 Drupal 8 베타 버전이 없습니다.

Search API에서는 동일한 SearchAPI 색인에서 엔티티를 결합 할 수 없습니다. 따라서 프로파일, 사용자, 노드는 서로 다른 색인에 있습니다. 다중 인덱스 검색을 허용하는 모듈이 있지만 내 요구를 충족시키지 못했지만 YMMV입니다. 동일한 색인에 많은 컨텐츠 유형과 많은 필드가있는 경우 색인 정의가 상당히 어려워 질 수 있습니다. (다중 색인 검색을 지원하는 NB SearchAPI D8 보고서)

Apachesolr을 사용하면 컨텐츠별로 필드를 쉽게 편집 할 수 있지만 문서에 관련 컨텐츠를 추가 할 수는 없지만 실제로는 필드 콜렉션, 참조 및 기타 정보를 포함하는 사용자 정의 코드를 작성해야합니다. 전지. Apachesolr D7은 뷰를 사용하지 않는 한 ajax를 지원하지 않지만 뷰를 사용하면 패싯이 손실됩니다. 즉, 인덱스에 저장된 정보를 수정하는 것은 행복하게 코딩하면 행복합니다.

엔터티 ID를 검색 한 다음 각각을 개별적으로 렌더링 (두 모듈에서 모두 사용할 수 있음)하는 아이디어는 성능 악몽처럼 보이지만 엔터티 디스플레이를 캐시하면 solr 응답에서 렌더링하는 것보다 훨씬 효율적일 수 있습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.