WordPress에서 사이트 내부 검색하기

거의 3년 반 전에 TatterTools를 버리고[1] WordPress를 사용하기 시작한 이래로 거의 항상 맘에 드는 툴로 잘 쓰고 있다.

그렇지만 한 가지 불만족스러운 점이 있다면 — 이번 WP 2.9에선 미디어 기능 강화에 초점을 맞춰서 나랑은 좀 연관이 적을 듯 하다 — 사이트 내부 검색 기능이다. 저장된 DB를 샅샅이 뒤지는 일 — 그러니까 전문 검색 — 을 하긴 하지만 일상에서 흔히 접하게되는 Google이나 naver  수준의 무언가에는 한참 못 미친다.

이를 WordPress 커미터인 Matt 도 인지하고 있는데, WP의 경쟁툴이기도한 drupal 쪽에서 SaaS류로 acquia search란걸 시작해서 자극받는듯 하다. 여기서는 apache solr + lucene으로 사이트 내 검색을 지원한다.

그래서 WordPress에는 뭐 없나 고민 좀 했는데, 얼마 전에 kaistizen.net 에서 검색을 하다 뜬 화면이 떠올랐다. Google 맞춤검색으로 사이트 검색을 하는 거였는데, 여튼 이걸 적용해본 경험담.

  • 검색 버튼 자체에 Google이 생성해 준 JavaScript 변수 +  JavaScript를 써서 검색을 하고
  • 이를 역시 Google이 생성한 JavaScript  코드가 붙은 페이지에서 출력한다. 이건 iframe이나 dom에 노드 만들고 쓰는 작업으로 한다(이건 선택 가능)
  • 다만 비영리 기관을 증명할 수 없으면 광고가 출력된다 -_-;; 이건 좀 맘에 안들지만 공짜로 쓰려면 어쩔 수 없지;

WordPress 쪽에는 플러그인이 하나 있긴했는데 2.8에서 문제가 있다. 원래 검색에 http://WP-uri/?s=검색어 형식으로 이루어져는데, 이게 http://WP-uri/search/검색어 형태로 예쁘게(…) 바뀌면서 플러그인과 충돌하는 것 -_-; 그래서 그냥 구글에서 지시하는데로 페이지 만들고 검색 폼을 조금 수정해서 동작하게 만들었다.

실제 검색 화면은 다음 이미지처럼 생겼다. 그냥 평소에 많이 보던 Google 검색 화면에 약간의 차이가 있는 정도? 문맥이 맞으면 맞춤검색이라고 구글로고가 뜬 밑에 광고도 뜬다;

GoogleCustomSearch

외부 툴/사이트에서 검색되는걸 달가워하지 않는 사람들이 많으니, 그리고 광고 다는걸 꽤나 피하는 사람도 많아서 일단 임시(?) 해결책일 수도 있긴하지만 당장 적용할 수 있는 수단이긴 하다. 일단 WP내부 툴 자체 검색은 좀 문제가 많으니까 -_-;

ps. 근데 개인적인 생각이지만, drupal/acquia에서 사용하는 방법은 약간 문제가 있어 보인다. 페이지를 변경하면,

  1. drupal 에서 SSL/HMAC을 써서 변경한 정보를 acquia 서버에 알리고
  2. acquia가 이를 수집하고
  3. drupal은 이를 이용해서 검색을 수행하는 코드를 넣고
  4. acquia는 실제 검색을 실행하는

방식이다. 구글의 좀 더 묵시적인 방법 (1은 sitemap.xml이 업데이트 된 걸 알려서 수행할 수도 있고, ping 서비스도 있고 .. + 전혀 알려주지 않아도 되고) 이랑 자주 나타나는 구글 크롤러의 위력을 생각하면 (경쟁사(?)인 구글에 비해) 너무 번잡한게 아닌가 싶기도 하다.

  1. 사실 버젼업에서 DB호환 문제 때문에 내가 버림받은 거에 가깝다. 덕분에 나는 이전툴을 만들고 WordPress에 정착 []

Author: rein

나는 ...

Leave a Reply