Algolia가 상상했던 것보다 더 대단한 이야기입니다.

6248 단어 LaravelAlgoliatech
온라인 홈 강사 링크개발Technote.
최근에 Algolia를 사용하는 검색을 가져왔지만, 짧은 시간 안에 검색 기능을 간단하게 가져올 수 있습니다.
이번에는 알골리아를 선택하기 전에 논의했던 일과 활용할 때의 팁 등을 정리했다.
demo

필요조건


두 가지 검색 기능이 필요한 조건으로 열거되었다.
  • 검색 후보 제출 기능
  • 검색 창에 입력하여 과목 등을 검색 후보로 실시간으로 표시
  • 선생님과 관련된 수업을 검색하는 기능
  • 노선의 제목과 본문 전문으로 검색한 결과 검색에 성공한 노선을 보인 선생님
  • 검색에 성공한 노선도 최대 3개
  • 先生A
      |- 検索にヒットしたコースA1
    先生B
      |- 検索にヒットしたコースB1
      |- 検索にヒットしたコースB2
      |- 検索にヒットしたコースB3
    先生C
      |- 検索にヒットしたコースC1
      |- 検索にヒットしたコースC2
     ...
    

    왜 Algolia를 선택했는지.


    전문 검색엔진으로 유명한 일라스틱서치와 다른 기능에서도 사용했던 알골리아가 후보로 올랐다.
    Algolia를 최종적으로 선택하기 전에 다음과 같은 몇 가지를 비교했습니다.

    비용/ 실장 원가


    Elasticsearch


    Elasticsearch를 선택할 때 클라우드 서비스를 사용하거나 서버를 준비하여 OSS 버전을 사용할 수 있습니다.

  • Elastic Cloud($16/월)

  • OSS(t2.micro를 타면 월당 약 8달러)

  • Amazon Elasticsearch Service(t2.micro면 20달러/월 정도)
  • OSS는 저렴하고 좋지만 서버를 준비해서 Elasticsearch 작업을 시작하는 것이 아니라 가져온 관리도 스스로 해야 하기 때문에 금액 이상의 비용이 필요하다고 생각합니다.

    Algolia


    팟캐스트 수나 Record 수가 10000에 이르면 무료로 사용할 수 있다.
    10000달러가 넘는 부분은 1000달러당 1달러입니다.
    https://www.algolia.com/pricing/
  • 요청 수
  • A Search request is a group of one or more search operations sent in a single exchange. Search operations are triggered when a search is performed. In autocomplete and search-as-you-type implementations, a new search request is performed on every keystroke.
    팟캐스트 수는 검색의 팟캐스트 수입니다. 이번 입력에 대응하는 검색 후보의 검색이라면 매번 입력할 때마다 계수되기 때문에 debounce에 힘쓰는 것이 좋습니다.
  • 레코드 수
  • Simply put, a record is an item or object that contains data that someone would search (or get recommendations) for
    레코드 수는 검색할 항목의 수입니다.
    이번 조건은 검색 후보의 검색과 노선의 검색을 10000개의 기록을 더하면 충분하다는 것이다.

    검색 통계


    Elastic search에는 Kibana라는 강력한 시각화 도구가 있는데, Elastic Cloud라면 표준을 사용할 수 있을 것 같다.
    알골리아는 관리 화면에서 index당 총 검색수, 키워드당 검색수, 검색에서 성공한 횟수 등을 볼 수 있어 기능적으로 충분하다.
    スクリーンショット 2021-08-05 12 56 39

    정보량


    Google Trend에서 보듯이 검색량이 압도적으로 많은 것은 엘라스틱 서치이고, 일본어를 포함한 정보도 엘라스틱 서치가 많다고 느낀다.
    スクリーンショット 2021-08-05 13 16 22
    다만 알골리아에도 공식 문서가 있어 충분하다.
    또 라벨이라면 전체 텍스트 검색Laravel Scout을 가져올 수 있는데, 알골리아의 드라이버가 준비돼 있어 데이터 동기화 등의 실현에는 어려움이 거의 없다.

    조건에 맞는 검색이 가능합니까


    선생님과 관련된 수업을 검색하는 기능은 검색 대상은 과정이지만 검색 결과는 선생님의 독특한 결과가 필요하다는 것이다.
  • 노선의 제목과 본문 전문으로 검색한 결과 검색에 성공한 노선을 보인 선생님
  • 검색에 성공한 노선도 최대 3개
  • 先生A
      |- 検索にヒットしたコースA1
    先生B
      |- 検索にヒットしたコースB1
      |- 検索にヒットしたコースB2
      |- 検索にヒットしたコースB3
    先生C
      |- 検索にヒットしたコースC1
      |- 検索にヒットしたコースC2
     ...
    
  • Elasticsearch
  • 실제로 시도한 적은 없지만Parent/Child 검색 될 것 같아요.
  • Algolia
  • distinct의 설정만 바꾸면 디스플레이에 필요한 결과를 얻을 수 있다.
    하지만 알골리아는 다음과 같은 결과가 돌아오기 때문에 성형이 다소 필요하다.
    検索にヒットしたコースA1
    検索にヒットしたコースB1
    検索にヒットしたコースB2
    検索にヒットしたコースB3
    検索にヒットしたコースC1
    検索にヒットしたコースC2
    

    결론


    검색 기능으로 어느 것이나 좋은 느낌.
    다만 이번에 자사 검색 대상의 데이터 수와 검색량을 고려한 결과 알골리아의 비용이 통제될 것 같아 결국 알골리아를 선택했다.
    Algolia와 Laravel Scout 덕분에 기술 선정, 검색 프레젠테이션 제작부터 실상, 테스트, 발표까지 프런트의 실상을 포함해 약 일주일 정도 완성되었습니다!

    기타


    계기판에서 조회가 어떻게 분해되는지 볼 수 있다.
    기대한 결과에 미치지 못한 경우가 많기 때문에 그런 경우엔 시노니미를 설정해야 한다.
    スクリーンショット 2021-08-05 13 50 39
    왜 합격했는지 볼 수도 있고.
    スクリーンショット 2021-08-05 13 52 22
    작지만 Algolia는 tf-idf와 같은 득점 링이 아니며 사용등분 알고리즘도 Elastic search와 다르기 때문에 신경 쓰이면 실제 검색 결과를 보고 비교할 필요가 있다.

    🔔 직원 모집


    온라인 가정교사 서비스 "ManaLink"에서 엔지니어를 모집하고 있습니다!
    https://manalink.jp/
    2020년에 발매되는데 더 많은 서비스를 함께 개발해 볼까요?
    개발한 기능은 온라인 멘토링의 현장에서 바로 활용될 수 있어 멘토링 과정의 최적화와 연결된 환경이다.
    특히 테스트 코드를 작성하고 엔지니어를 주도로 품질을 보호하며 신기술의 학습과 출력을 중시하며 기술 수준을 고려하지 않는다.
    이런 맥락에서 세부적인 기술 경험이 있느냐 없느냐보다 앞으로 어떤 엔지니어가 돼 여가 면담에 적극적으로 나설 수 있기를 기대한다.
    일단 한 번 얘기 안 해요?다음은 Meety에게 문의하세요!
    https://meety.net/matches?q=%23마나 링크
    최근 모집 요점은 다음과 같이 요약된다.다만 최근 공모를 위해 사업 쪽에 관심이 있다면 중장기적인 연계도 환영한다.당신의 연락을 기대합니다!
    https://noschool.notion.site/TypeScript-PHP-8b37ebb8d2344b58b0fd88acff0e21af

    좋은 웹페이지 즐겨찾기