월별 글 목록: 2004년 11월월

구글 친화적인 검색어 하이라이트 구현

구글검색결과 Highlighting

류광님의 글 “구글 친화적인 검색어 하이라이트 구현 아이디어”를 보고 제 홈에 적용해 봤습니다.

간단히 말하면.. Google, Daum, Naver, Empas, Yahoo, BlogKorea등의 검색엔진을 통해서 들어오시는 분들의 Referer 주소를 조사하여,
검색엔진에 입력했던 해당 단어를 제 홈에서도 하이라이팅(Highlighting) 해주는 기능입니다.

일례로 구글에서 “Firefox Extension” 을 검색해보면 가장 처음에 제 글이 보이는데요.
( 구글이 아마도 절 좋아하나 봅니다. 이런 주제어인데 1등이로군요 ^_^; )
거기서 제 페이지를 클릭해서 함 들어가 보시면, 구글에서 검색했던 단어인 Firefox 와 Extension 이란 글자들이
제 홈에도 서로 다른 색깔로 표시되는것을 보실수 있습니다. (위에 화면이 그 결과입니다.)

검색엔진을 통해 들어오셨을경우, 해당 글자때문에 오신것일테니.. 찾아서 보여주는건 하나의 서비스 일수 있겠죠. 🙂

혹시 필요하신분들을 위해 소스를 공개합니다. 소스코드는 간단하니까, 쉽게 적용하실수 있을겁니다.
전 태그안에 글자들은 치환안되게 막느라.. 무지 고생했습니다. T_T (사실은 검색하느라;;)
역시나 PHP 막코딩이니까, 틀린부분 있으면 조언부탁드리겠습니다.

[#!_소스및 적용방법 보기.. ▽|그만 볼래요.. △_!#]


<?

function get_search_text($referer_url)

{    

 
$engines = array (    // 검색엔진의 정보

  
array("google","q",0), // site주소 , 검색문자열스트링 , 인코딩(0=UTF-8,1=urlencode)

  
array("naver","query",1),  

  array(
"empas","q",1),

  array(
"yahoo","p",1),

  array(
"daum","q",1),

  array(
"blogkorea","st",1// 현재 AllBlog는 Referer에 검색정보가 제대로 안넘어와서 제외

 
);

  

  
$output = array();

 
$url_s = parse_url($referer_url); 

 
parse_str($url_s[query], $output);

 

 for (
$i = 0;$i < count($engines);$i++) {

   if(
eregi($engines[$i][0],$url_s[host])) {

     switch (
$engines[$i][2])

     {

       case
0: // UTF-8

         
$tt = mb_convert_encoding($output[$engines[$i][1]], "EUC-KR", "UTF-8");        

         break;

       case
1: // url_decode

         
$tt = rawurldecode($output[$engines[$i][1]]);        

         break;

       default:

         
$tt = mb_convert_encoding($output[$engines[$i][1]], "EUC-KR", "UTF-8");        

         break;

     }         

     

     return
explode(" ",$tt);     

   }     

 } 

 return
0;  

}

function highlight_search_result($memo,$query)

{

  
// 글자들의 색상

  
$colors = array (

  
"#bbbbff","#ffffaa","#bbffff","#ffc000","#ff8080","#30c0ff","#00ffff",

  
"#ff00ff","#f0c0ff","#c0c0c0","#ff8000","#ffc0c0","#ff0000","#008080");

  

  
$cnt_query = count($query) < 13 ? count($query) : 12;

      

  for (
$i = 0;$i < $cnt_query;$i++)

   
$memo = preg_replace(

     
"'(?!<.*?)$query[$i](?![^<>]*?>)'si",

     
"<b style="color:black;background-color:$colors[$i]">$query[$i]</b>", $memo);

   
// 태그안에 있는 문자들은 치환안되게 한다.

  
return $memo;

?>

위 소스를 글출력 부분에 넣고 , 아래와 같이 글전체 변수에 대해 실행해주시면 됩니다.


<?

$referer_query = get_search_text($HTTP_SERVER_VARS[HTTP_REFERER]);

if (is_array($referer_query)) {     

  
$memo = highlight_search_result($memo,$referer_query); // $memo 는 출력할 글 전체 내용

}

?>

[#!_END_!#]

* 이글은 http://occam.n4gate.com/zboard/view.php?id=column&no=55 에 트랙백되었습니다.

구글 번역이 나를 웃겨요 -_-;

구글에서 검색결과에 번역 서비스를 제공하기 시작했습니다.
자료검색결과 페이지에서 한글이외의 문서는 제목 옆에 [ 문서번역하기 BETA ] 라는 링크가 생기고,
이걸 누르면 기존의 다음 일본어 번역기처럼.. 실시간으로 번역한 페이지를 보여주는 서비스 인데요.

역시 한글은 너무 어려웠나 봅니다. 아주 재미난 결과를 보여주는군요. { via clien.net }

Win 95 와 Win ME 는 제품명이 아예 다르군요 !

아직 Beta 여서 그럴수도 있겠지만, 더욱 분발을 요구하는 바입니다 !
아.. 같은 Beta 라도 학술문서 검색인 Google Scholar 는 아주 쓸만합니다. ^_^