본문 바로가기

IT-Consultant

vsearch sample source

<%@ page session="true" contentType="text/html; charset=euc-kr" %>
<%@ page import="java.util.* "%>
<%@ page import="java.io.*" %>
<%@ page import="java.net.*" %>
<%@ page import="com.verity.search.*" %>
<%@ page import="com.verity.k2.*" %>

<%
int docStart = 1; //검색 시작번호
int docPage = 10;  //페이지 리스트 개수
int maxDocs = 1000;  //검색할 전체 건수
int totalDocs = 0;  //검색 건수
int PBS_MAX_COUNT = 1; //하이라이팅 처리해서 불러올 문단수
int PBS_MAX_BYTES = 300; //하이라이팅 처리해서 불러올 문자열수

//String hostport = "10.201.27.53:9900";               //검색엔진 정보
String hostport = "210.102.100.215:9901";               //검색엔진 정보
String START_HL_TAG = "<font color=red>";     //하이라이트 시작 태그
String END_HL_TAG = "</font>";                        //하이라이트 종료 태그
String queryParser = "3soft";  //쿼리파서 종류\
String[] fields = {"V_TITLE","VDKSUMMARY","VDKPBSUMMARY"}; //필드 정의
String[] colls = {"KEM"};  //검색할 컬렉션 정의
String queryText = "";  //엔진에 던질 검색어
String query = "";  //엔진에 던질 검색어
String sortSpec = "";   //정렬
%>


<%
//request.setCharacterEncoding("UTF-8");
//response.setContentType("text/html;charset=" + "utf-8");

if(request.getParameter("docStart")!=null && request.getParameter("docStart").trim().length()>0)
 docStart = Integer.parseInt(request.getParameter("docStart"));
if(request.getParameter("docPage")!=null && request.getParameter("docPage").trim().length()>0)
 docPage = Integer.parseInt(request.getParameter("docPage"));
if(request.getParameter("query")!=null) query = request.getParameter("query");

//if(query.trim().length()>0) queryText = "`" + query + "`";
queryText = "`대한민국`";
%>


<%
Result result = null; //검색결과 Set

try {
  /*** 기본으로 넣어줄 값 ***/
  VSearch vs = new VSearch(); // 검색엔진

  vs.setUrlStringsMode(false);  

  vs.setServerSpec(hostport);
  vs.setCharMap("utf8");
  vs.setQueryParser(queryParser); //locale QP 사용시 parser

  vs.setQueryText(queryText);
  vs.setDateFormat("${yyyy}-${mm}-${dd}");
  vs.setSortSpec(sortSpec);

  vs.setDocsStart(docStart);
  vs.setDocsCount(docPage);
  vs.setMaxDocCount(maxDocs);
  /*** 기본으로 넣어줄 끝 ***/

  /*** 동적요약문 처리 시작***/
  vs.setSummaryMaxPassageCount(PBS_MAX_COUNT);
  vs.setSummaryMaxPassageBytes(PBS_MAX_BYTES);

  VFieldHighlightParameters objFieldHLParams = vs.getFieldHighlightParameters();
  // objFieldHLParams.addFieldHighlight("lims_title", START_HL_TAG, END_HL_TAG);   // 타이틀에 하이라이트하면 보기 싫어요.
  objFieldHLParams.addFieldHighlight("VDKPBSUMMARY", START_HL_TAG, END_HL_TAG);
  /*** 동적요약문 처리 끝 ***/

  for ( int i = 0; i < fields.length; i++)  // 필드를 추가
  {
    vs.addField(fields[i]);
  }
 
  for ( int j = 0; j<colls.length; j++)  // 컬렉션 추가
  {
    vs.addCollection(colls[j]);
  }
  result = vs.getResult();
  totalDocs = result.docsFound;

} catch(Exception e) {
  throw new RuntimeException(e.getMessage());
}
%>



<html>
<head>
<script language="javascript">
//검색
function goSearch(form) {
  if (form.queryText.value == "") {
    alert('검색어를 입력하세요!');
    return false;
  }

  form.submit();

  return false;
}
//페이지 이동 처리
function GotoPage(form, docStart)
{
  form.docStart.value = docStart * form.docPage.value + 1;
  form.submit();
  return;
}
</script>
</head>

<body>
<table width="100%"  border="0" align="center" cellpadding="1" cellspacing="0">
 <tr>
  <td>
   <form name="search" onsubmit="return goSearch(this);">
   <input type="hidden" name="docStart" value="<%=docStart%>">
   <input type="hidden" name="docPage" value="<%=docPage%>">
   <input type="text" name="query" value="<%=query%>">
   <input type="submit" value="Search!!">
   </form>
  </td>
 </tr>
 <tr>
   <td>검색어:<%=query%>, <span class="style2">검색결과:</span> <font color="#CC3300">[<%=totalDocs%>건]</font> </td>
 </tr>
 <tr height="15"><td>&nbsp;</td></tr>
 <%
   Enumeration Docs = result.documents().elements();
   while (Docs.hasMoreElements()) {
  Document doc = (Document)Docs.nextElement();
 %>


 <tr><td style="padding-left:20px;font-size:9pt"><%=doc.getPassageBasedSummary()%></td></tr>
 <tr><td height="5"></td></tr>
<% } //while%>
</table>


<%
// Page Navigate
long Total, Page, TotalPage;
long Start;
long CurPage, StartPage, EndPage;
long j;
Total = totalDocs-1;
Start = docStart;Page = docPage;
CurPage = Start / Page;
StartPage = ( Start / ( 10 * Page ) ) * 10;
TotalPage = Total / Page;
EndPage = StartPage + 9 > TotalPage ? TotalPage : StartPage + 9;
%>
<table width="100%" border="0" cellpadding="0" cellspacing="0">
  <tr height="36">
 <td>
 <% if (StartPage != 0) { %>
   <a href="JavaScript:GotoPage(search, 0)">[처음]</a>&nbsp;&nbsp;
   <a href="JavaScript:GotoPage(search, <%=StartPage-10%>)">[이전10개]</a>
 <%}//end of if%>&nbsp;
 <%
   for (j = StartPage ; j <= EndPage ; j++) {
  if( j == CurPage ){
 %>
 | <FONT COLOR="royalblue"><B><%=j+1%></B></FONT>
 <%
  } else {
 %>
 | <A HREF="JavaScript:GotoPage(search,<%=j%>)"><%=j+1%></a>
 <%
  }
   } //for
 %>
 |&nbsp;
 <%
   if (TotalPage > EndPage) {
  EndPage = EndPage + 1;
 %>
   <a href="JavaScript:GotoPage(search,<%=EndPage%>)">[이후10개]</a>&nbsp;&nbsp;
   <a href="JavaScript:GotoPage(search,<%=TotalPage%>)">[끝]</a>
 <% }//end of if %>
 </td>
  </tr>
</table>


</body>
</html>