전북 by아포리아 postedAug 11, 2018

통합검색 검색어 자동완성 애드온 (0.1.6, 2018-08-11)

Views 87 Likes 0 Replies 0
Extra Form
입금자 성명 cydemo
필요장비 스크린, 화이트 보드
대관시간 1000
신청공간 세미나실
대관일 2018-08-18

 

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

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

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

 

 

기본 기능

 

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

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

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

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

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

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

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

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

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

 

 

0.1.6 업데이트 (2018-08-10)

 

- jQuery UI autocomplete 플러그인을 수동으로 로드하게 함

 

 

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

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

 

?