자료실

통합검색 검색어 자동완성 애드온

2018.06.04 15:41
1,317
0
자료 유형 애드온
간단한 소개 통합검색 검색창에서 키워드를 입력할 때 기존 '태그'를 참조하여 검색어를 자동완성 시켜주는 애드온
설치 경로 ./addons/ap_autocompleteIS
코어 지원 범위 XE 1.x, Rhymix 1.9
PHP 지원 범위 기타
자료 구분 공개 자료
라이선스 GPL v2
파일명버전날짜용량다운로드 수
ap_autocompleteIS.0.1.5.zip 0.1.5 2018.06.09 11.2KB 112
ap_autocompleteIS.0.1.4.zip 0.1.4 2018.06.05 10.7KB 32
ap_autocompleteIS.0.1.3.zip 0.1.3 2018.06.05 10.5KB 20
ap_autocompleteIS.0.1.2.zip 0.1.2 2018.06.04 10.5KB 21

 

- '통합검색 검색어 자동완성 애드온'입니다.

- 통합검색 검색창에서 키워드를 입력할 때 기존 '태그'에 따라 검색어를 자동완성 시켜주는 애드온

- 웹지기님 도움으로! 구글 맞춤검색에도 적용 가능할 수 있게 짜봤습니다.

 

 

기본 기능

 

- 기본 통합검색 또는 구글 맞춤검색 중 하나를 선택하여 애드온 적용

- 구글 맞춤검색 선택시 자동완성 키워드 추출에 지연시간을 설정 (기본값 2000 = 2초)

- 검색창의 자동완성 키워드를 '태그' 또는 '제목'으로부터 선택적으로 추출

- 자동완성 키워드를 수집할 모듈의 mid 직접 입력 가능. 미입력시 '기본 통합검색'은 통합검색 모듈(integration_search)에 지정되어 있는 모듈로부터, '구글 맞춤검색'은 사이트의 전체 모듈로부터 자동완성 키워드를 수집함

- 수집할 키워드의 최대 갯수 제한 가능. 미지정시 10,000개

- 검색창에 드롭다운되는 자동완성 키워드 목록의 갯수 지정 가능. 미지정시 10개

- 검색어 입력시 자동완성 키워드 목록에 동일한 문자가 있을 경우 하이라이트 표시

- 드롭다운되는 자동완성 키워드 목록의 z-index 값을 임의 지정 가능. 미지정시 0

- 수집된 검색어들은 로컬 저장소(localStorage)로 저장하며, 분 단위로 시간을 설정하고 해당 시간이 지나면 새로 추가된 문서로부터도 검색어를 추가 수집할 수 있음

 

 

0.1.5 업데이트 (2018-06-09)

 

- 서버 부하 이슈로 ajax 호출 시점을 페이지 로드가 아니라 검색창 focus 시점으로 변경. 캐시 적용

- 기타 소스 코드 정리

- 주의 : 앞으로는 애드온 설정을 바꿀 때마다 가급적 '캐시파일 재생성'을 해주세요. 사이트 이용자들의 로컬 저장소를 활용하는 만큼 "특히 검색대상을 태그에서 제목으로 또는 제목에서 태그로 바꾸는 경우" 로컬 저장소 보존 시간을 1분으로 조정하셨다가 1분 뒤 원하시는 시간을 재변경해주시면 좋습니다. 아니면 이용자들로 하여금 로컬 저장소 비우기를 유도해주시는 것도 방법입니다만, 브라우저마다 로컬 저장소 삭제 기능이 다를 수 있으므로 세심한 안내가 필요합니다.

 

 

0.1.4 업데이트 (2018-06-05)

 

- 구글 맞춤검색에서 드롭다운 메뉴의 left 값 수정

- 커스터마이징 사용자를 위해 드롭다운 메뉴의 위치와 넓이를 선택 가능하게 함 (기본값은 div에 맞춤)

- 키워드 배열 순서를 (1) 입력값과 동일한 자모음으로 시작하는 태그를 우선 배열 (2) 그 안에서는 가나다순으로 배열 (3) (시작부분이 아니라) 중간부분부터 동일한 자모음을 갖는 태그를 추가 배열 (4) 그 안에서는 가장 많은 count값을 가지는 태그를 우선 배열 (5) 나머지는 DB상의 등록된 순서에 따라 배열

 

 

0.1.3 업데이트 (2018-06-05)

 

- 애드온 실행 조건에서 strpos 조건을 삭제

- 구글 맞춤검색에서 드롭다운 메뉴를 인풋 필드에 맞춰서 출력

 

 

동작 설명

 

- 애드온 설정에서 옵션 체크

- 애드온 변수를 js 파일에 전달

- jQuery.ui가 로드되지 않은 게시판의 경우엔, 애드온에 포함된 로컬 js와 css 파일을 별도로 로드

- 브라우저가 '파이어폭스'일 경우, 한글 검색 문제 해결을 위한 keydown 이벤트 지연 설정

- js 파일에서 ajax를 이용, 별도의 php 파일과 xml 쿼리 파일로부터 서버의 자동완성 키워드 데이터를 json 형태로 호출

- 호출된 json 데이터는 {title : [~~~], tag : [~~~]}의 형식으로 설정

- 또한 데이터를 사용자의 브라우저 localStorage에 저장함으로써, 서버의 DB 쿼리 실행 빈도를 (최소화하고 싶지만ㅠ) 낮춤

- 애드온 설정에서 입력해둔 '로컬 저장 기한'이 지나면 localStorage의 데이터를 비우고, 페이지 로드 및 검색 옵션 선택을 할 때마다 다시 데이터를 축적

 

 

이 애드온을 사용하면 좋은 사이트


- (웹진을 비롯한 콘텐츠 제공 사이트, 아카이빙 사이트 등을 비롯하여) 각 게시물에 tag가 체계적으로 입력된 사이트

 

 

테스트 환경

 

- 크롬 66.0.3359.181 / IE 11.48.17134.0 / 엣지 42.17134.1.0

- 라이믹스 1.8.42 / PHP 버전: 7.0.22

- XE 1.8.43 / PHP 버전: 5.5

- 스포어 웹호스팅, 카페24 웹호스팅

 

 

데모

 

- 기본 통합검색 * 라이믹스 * PHP 7.0

: https://bit.ly/2kKB8NE (들어가서 우측 상단 버튼을 누르면 통합검색창이 나옴)

- 구글 맞춤검색 * XE

: 웹지기님 사이트의 통합검색 참조 (알 만한 사람들은 아는 그곳)

 

윤삼 Lv. 19
아무래도 중급 초반 수준의 코딩 오타쿠인 것 같습니다.

댓글 70

  • 2018.06.06 13:58 #991633
    무엇 때문에 되는지 알려주셔야 개발자분이 다른분 문제 발생시 안내나 도움을 쉽게 드릴수 있지 않을까요?
  • 2018.06.06 14:02 #991637
    네네. 웹지기님 말씀대처럼 지연시간을 대폭늘렸고, 개발자님 말씀대로 자동완성 드롭다운 z-index 1/ 그리고 충돌할수 있는 제목의 문서 삭제하/쿠키 삭제/ 캐시삭제[이건 제가 그냥 해본거라..] 그후 잘 작동됩니다!
  • 2018.06.06 14:06 #991645
    그럼 조언을 드린다면 지금 PC의 메인페이지가 서버 성능에 비해 너무 과하게 구성되어 있습니다. 이부분을 필수적인 것만 구성하고 나머지를 없애신 다음 로딩속도를 좀더 개선할 필요가 있습니다.

    모바일에서는 빠르게 자동완성 기능을 사용할 수도 있지만 지금 PC의 환경 때문에 어쩔 수 없이 지연시간을 굉장히 길게 줘야 합니다.

    모바일에서는 이 대시기시간 동안 자동완성 기능이 동작하지 않아요.
    개인적으로 봤을때 PC의 메인페이지 구성이 너무나 많은 양을 담고 있네요.
  • 2018.06.06 15:04 #991685
    안그래도 정리를 해야한다 생각하긴 했는데 이번기회에 해야겠군요ㅋ 조언 감사합니다.
  • 2018.06.06 15:15 #991693
    하나만 여쭐게요. 혹시 구글 검색창을 웹지기님 홈처럼 바로가기 아이콘으로 구성하고 다른 페이지에서 검색하게 하는것과, 메인에서 바로 검색하게 하는 것이 로딩 속도에 영항을 주나요?
  • 2018.06.06 15:37 #991714
    뭐 컨텐츠가 로딩 된 후 구글검색이 불러와 지기 때문에 컨텐츠 로딩은 차이가 없습니다. 다만 구글검색창이 컨텐츠양이 많으면 한참 후에 보여지겠죠.

    저처럼 따로 별도페이지로 빼면 구글 검색창만 불러오게 때문에 빨리 불러올 수 있스을 수 있습니다.

    또는 구글검색창이 아닌 검색폼은 만드셔도 됩니다.

    지금 저희 검색전용 페이지의 검색창은 사실 구글검색이 아니고 그냥 제가 만든 창 입니다. 그래서 지연시간 조차 필요하지 않습니다.
  • 2018.06.06 15:45 #991726
    또 이렇게 배워가네요ㅋ 맨날 훔쳐보고 있습니다.
  • 2018.06.06 13:49 #991615
    브라우저에서 쿠키 삭제 기능을 이용해서 localStorage를 비워보세요.
    그리고 z-index 값을 1 이상으로 줘보시구요.
  • 2018.06.06 13:54 #991620
    구글 맞춤검색 드롭다운 맞춤 : div에 맞춤
    자동완성 드롭다운 z-index : 1
    으로 추천해봅니다~
  • 2018.06.06 13:56 #991625
    됩니다!ㅋㅋ 감사해요.
  • 2018.06.06 14:02 #991641
    신경써주셔서 감사합니다.
  • 2018.08.10 04:24 #1035920
    정말 유용하고 좋은 애드온 제공해주셔서 감사합니다 :)
    실례지만 js파일에서 jquery 스크립트 파일을 ajax로 요청해서 데이터를 동기식으로 받는 것 같은데요. 그런데 이게 다른 jquery 스크립트를 실행할 때 연쇄적인(?) 오류가 발생하는 경우가 있더라구요. 그래서ajax에서 async: false를 async:true로 바꾸고 success 부분에 ap_autocompleteIS.js 파일에서 ajax 함수 바깥에 있는 함수들을 success 안으로 집어넣으니까(?) 정상적으로 잘 작동하더군요. 혹시 다른 js파일과 충돌하면서 오류가 발생하시는 분들은 참고하셔도 좋을 것 같습니다.
  • 2018.08.10 16:50 #1036449
    GLANCEYES님, 혹시 가능하시다면 이 파일로 테스트 한번 해주실 수 있을까요?
    그전에는 ui 플러그인을 자동으로 로드하게 하려다보니 동기식으로 호출을 이용했는데, 이번에는 아예 운영자가 수동으로 불러오게 옵션을 줬어요.

    https://aporia.blog/?module=file&act=procFileDownload&file_srl=14885&sid=4f1474c2f57a3f3611cae4371b2cfa5c&module_srl=11567

    부탁드려봅니다~
  • 2018.08.11 02:52 #1036539
    아 네 감사합니다 :)
    죄송하지만 링크로 들어갔을 때 '사이트에 연결할 수 없음'이라면서 파일 다운로드가 되지 않는 것 같은데 다른 방법으로 받을 수 있도록 해주실 수 있을까요? 메일로 보내주셔도 되구요.
    glanceyes@naver.com입니다.
  • 2018.08.11 03:50 #1036576
    아, 요즘 서버가;;;
    메일로 보내드렸어요. (zip 파일은 메일 보내기도 쉽지가 않네요ㅜ)
  • 2018.08.14 11:24 #1039030
    답변이 늦어서 죄송합니다.
    저희 사이트에서는 딱히 오류 없이 정상적으로 잘 출력이 되는 것 같습니다.
    도움이 되셨으면 좋겠습니다. 좋은 자료 제공해주셔서 감사드립니다.
  • 2018.08.14 13:03 #1039080
    조만간 더 보완해서 업데이트 버전도 올려야겠네요ㅎㅎ 확인 감사드려요.
  • 2020.08.23 05:12 #1445589
    감사합니다. 잘 사용하겠습니다. ^^
  • 2022.11.30 09:25 #1724950

    정말 @윤삼   님 도움을 많이 받습니다 . 좋은 자료 공유 감사드립니다 !~!!

  • 2024.05.23 09:10 #1824650
    와우 이런 애드온이 있었군요, 언제나 감사드립니다 ㅎㅎ