자바를 손 뗀지가 벌써 5년정도 된것 같다. 요즘 다시 자바를 시작해야 할 필요가 생겼는데 막상 시작하자니 먼저 가슴이 답답해진다. 우선 이런 컨퍼런스라도 적극적으로 참여해 봐야 할 듯..
Category: Programming
Zend Framework에 포함되어 있는 Zend_Lucene_Search
php에는 여러 프레임워크가 존재한다. 이 중 Zend Framework라는게 있는데, php로 구현되어 있는 검색엔진이 없을까 찾다가 알게 되었다. 이 프레임워크에는 Jakarta 프로젝트의 하나인 Lucene을 PHP로 포팅한 Zend_Lucene_Search 패키지가 존재한다.
이 패키지를 이용하여 검색엔진을 만들어서 테스트해봤다. 역시 빠르다. 하지만 문서의 갯수가 많아지니 현저히 느려지는 속도..
나름 결론을 내린 건 하드웨어 사양에 따라 틀리겠지만 10만건정도 이하의 문서를 검색하는 사이트에서 유용할 것 같다. 부하가 많이 걸리는 부분은 키워드에 맞는 문서를 검색하는 부분이 아니라 검색되어진 문서를 배열로 만들고 이를 사용자의 요구에 맞게 정렬하는 부분이었다. 이는 PHP의 한계가 아닐까 보여지는데… 검색결과문서수가 평균 천건을 넘지 않는다면 인덱싱되어 있는 문서건수가 많더라도 유용하게 사용되어 질 것 같다. 또한 검색엔진, Lucene을 이해하는 데에도 유용할 것 같다.
ASP: MSXML2.ServerXMLHTTP 사용하여 원격 웹서버 내용 갖고 오기
HTTP를 구현해 놓은 여러 컴포넌트들이 있지만 윈도우2000부터 기본으로 설치되는 MSXML2.ServerXMLHTTP 컴포넌트를 이용하여 원격 웹서버의 내용을 갖고 올수 있다.
가장 기본적인 방법은 다음과 같다.
<%
sUrl = "http://www.ecplaza.net/"
set oHttp = Server.CreateObject("MSXML2.ServerXMLHTTP")
oHttp.Open "GET", sUrl, False
oHttp.Send ""
Response.Write oHttp.ResponseText
Set oHttp = Nothing
%>
GET 방법으로 갖고 온 HTML을 화면에 출력하는 루틴이다. POST 방법으로도 요청할 수 있다.
<%
sUrl = "http://river.ecplaza.net/form.asp"
set oHttp = Server.CreateObject("MSXML2.ServerXMLHTTP")
oHttp.Open "POST", sUrl, False
oHttp.setRequestHeader "Content-Type", "application/x-www-form-urlencoded"
oHttp.Send "subject=test&contents=message+body"
Response.Write oHttp.ResponseText
Set oHttp = Nothing
%>
오류 처리는 Send 메쏘드를 호출하기 전에 On Error Resume Next를 적어주고 오류발생 여부를 체크하면 된다.
<%
sUrl = "http://river.ecplaza.net/form.asp"
set oHttp = Server.CreateObject("MSXML2.ServerXMLHTTP")
oHttp.Open "POST", sUrl, False
oHttp.setRequestHeader "Content-Type", "application/x-www-form-urlencoded"
On Error Resume Next
oHttp.Send "subject=test&contents=message+body"
If Err Then
Response.Write "Error:" & oHttp.ParseError.URL & "<br>" & _
oHttp.ParseError.Reason
Else
Response.Write oHttp.ResponseText
End If
Set oHttp = Nothing
%>