[워드프레스] custom field까지 설정할 수 있는 강력한 검색 플러그인 : Relevanssi – A Better Search

글의 요지 : Relevanssi – A Better Search 플러그인을 이용하면 다양한 검색 조건을 넣을 수 있다. 특히, 특정 Custom Field와 특정 카테고리 등을 검색에 잡히게 하거나 제외하게 하는 등의 세부사항을 설정할 수 있다. 이 플러그인은 무료로 제공되며, 더 강력한 기능을 가진 프리미엄 버전도 있다. 한글 사용자들이 쓰려면 DB에서 인코딩을 바꿔 줘야 할 수도 있다.

워드프레스를 이용해서 웹사이트 제작을 하고 있다. CMS를 사용하니 분명한 장점이 있다. 매번 반복해야 하는 페이징, 본문 불러오기, 리스트 만들기, 입력하기 등등의 작업을 굳이 하지 않아도 된다는 점은 정말 매력적이다.

그러나 분명한 단점도 있다. CMS의 규칙을 벗어나는 것을 하나 하려고 하면 온갖 규칙에 얽매여서 제대로 하기가 힘들어질 때가 있는 것이다. 물론, CMS를 하나의 언어라고 생각하면 문제는 쉬워진다. CMS의 각종 함수에 통달해 있다면 기능을 추가하는 것이 그다지 어렵지 않을 것이기 때문이다.

워드프레스를 이요한 개발을 처음 해보는 나는 각종 함수에 통달해 있지 않았다. 다음 난제에 부딪혔다.

난제

워드프레스는 post_meta 라는 테이블을 이용해서 포스트에 추가로 들어가는 컬럼을 무한히 확장할 수 있다. 컬럼을 무한히 추가하는 방식이 아니라 key=value 쌍으로 데이터를 저장한다.

예컨대 출판사 사이트를 만든다고 해 보자. 워드프레스에 기본으로 들어가는 정보는 제목과 본문이다. 그럼 저자, 역자, 저자 소개, 역자 소개, 책 소개, 목차 등의 정보는? 바로 post_meta에 저장하면 된다. 그리고 그걸 쉽게 만들어 주는 플러그인이 바로 Custom Field Template 이다. (이를 설명한 글은 : 워드프레스 플러그인 “Custom Field Template” ― 강력한 사용자정의 필드 tool)

이것을 이용해서 내가 개발하는 웹사이트도 잘 만들었다. 그런데?

문제가 생겼다. 요구사항이 추가됐는데, 검색시 다른 정보들은 검색하지 말고 책 제목과 저자만 검색하게 해 달라는 것! 두둥~ 이것은 post의 기본 정보 중 제목과 custom field들 중 일부만을 검색해 달라는 말이다.

일단 워드프레스의 기본 검색은 custom field를 검색하지 못한다. 따라서 직접 검색 쿼리를 짜거나, 플러그인을 사용해야 한다.

플러그인 뒤지기

그래서 플러그인을 뒤지기 시작했고, 다양한 검색 플러그인을 테스트해 봤다.

이런 시행착오를 거친 끝에 결국 Relevanssi – A Better Search 플러그인을 찾아 냈다.

Relevanssi – A Better Search 플러그인의 특징

이 부분은 Relevanssi – A Better Search 플러그인 페이지의 소개를 번역한 부분이다.

주요 특징

고급 기능

라이센스

이 부분 역시 라이센스 부분을 번역한 것이다.

Relevanssi는 레귤러 버전과 프리미엄 버전이 있다. 레귤러 Relevanssi는 공짜고 앞으로도 그럴 것이다. Relevanssi 프리미엄은 비용을 지불해야 하지만 더 새로운 기능을 사용할 수 있다. 표준 Relevanssi는 버그만 지속적으로 수정할 것이지만, 프리미엄 버전은 계속 새 기능이 추가된다. 또한 표준 Relevanssi에 대한 지원은 전적으로 내 기분과 가용 시간에 달려있지만, 프리미엄 버전 구입비에는 지원 비용이 포함돼 있다.

프리미엄 버전의 특징(프리미엄 버전에만 해당함)

사용법

사용법은 간단하다. 설정은 보면 알 수 있게 돼 있으니 패스한다. 개발자면 누구나 설정 가능할 것이라고 본다.

다만 두 가지, 좀 까다로운 부분만 설명하겠다.

일단 퍼지 검색 항목. 퍼지 검색은 인공지능 검색으로, 꼭 검색어와 일치하지 않더라도 대충 비슷한 놈까지 불러 주는 검색이다. 이게 한국어에서는 제대로 작동할 리 만무하다. 따라서 끄는 편이 속편할 듯하다. 이상한 검색 결과를 보고 싶지 않다면 말이다. (물론 각자 테스트해 보고 판단하기 바란다.)

다음, 이 검색엔진은 인덱싱을 기반으로 작동한다. 따라서 맨 위에 있는 인덱싱 버튼을 눌러 줘야 작동한다. 그런데, 골때리는 게 어떤 경우 DB가 latin을 기본 인코딩으로 생성되기 때문에 한글을 인식하지 못한다. 따라서 DB의 테이블을 죄다 utf8이나 euckr로 변경해 줘야 한다. 그래야 인덱싱이 제대로 된다.

인덱싱이 제대로 됐는지는 설정 페이지의 맨 밑에 가 보면 알 수 있다.

따로 코드를 적어 주거나 할 필요는 없다. 기본 검색창에서 잘 돌아 간다.

이상이다.

👇 카테고리 글 목록

대표글

“[워드프레스] custom field까지 설정할 수 있는 강력한 검색 플러그인 : Relevanssi – A Better Search”에 대한 5개의 응답

  1. 와 굳^^ 제 블로그에도 이 설명을 링크로 달아나야겠어요

    1. 서로 도움이 되는군요!

  2. […] 제외시키는 등의 제어를 할 수 있는 플러그인도 있다. 녹풍님이 ‘custom field까지 설정할 수 있는 강력한 검색 플러그인 : Relevanssi – A Better Sear…‘에서 잘 정리하고 […]

  3. “이 검색엔진은 인덱싱을 기반으로 작동한다. 따라서 맨 위에 있는 인덱싱 버튼을 눌러 줘야 작동한다. 그런데, 골때리는 게 어떤 경우 DB가 latin을 기본 인코딩으로 생성되기 때문에 한글을 인식하지 못한다. 따라서 DB의 테이블을 죄다 utf8이나 euckr로 변경해 줘야 한다. 그래야 인덱싱이 제대로 된다” 부분의 문제가 있어 수정하려고 합니다만 제가 관련 지식이 워낙 부족한 지라, 도움을 받고자합니다.
    phpMyAdmin을 기준으로 어디를 어떻게 고쳐야할지 왕초보의 시점으로 따라하기 식의 설명을 좀 부탁드리겠습니다. T_T

댓글 남기기