'개발하는 남자'에 해당되는 글 122건

  1. 2009.04.07 오픈소스 검색서버 SOLR 설치 메뉴얼 2
  2. 2009.04.07 오픈소스 검색서버 SOLR 설치 메뉴얼 1
  3. 2009.03.15 시작이란 추억.
  4. 2009.03.13 scrollHeight / clientHeight / scrollTop
  5. 2009.03.12 [SOLR] CustomClobTransformer
  6. 2009.03.11 NoClassDefFoundError
  7. 2009.03.11 WOA - Web Oriented Architecture 관련 글
  8. 2009.03.02 CSV파일
  9. 2009.02.24 [검색]Solr 관련
  10. 2009.01.15 [펌] 2년차 개발자가 알아야 할 기본 지식

오픈소스 검색서버 SOLR 설치 메뉴얼 2

|

2. SOLR 설정

 

2.1 scheme.xml 편집

 

SOLR 디렉토리 아래의 scheme.xml 파일을 편집기로 , 도큐먼트의 필드정보를 설정한다.

 

2.1.1 filed속성 정리

 

<fields>

<field name="docId" type="long" indexed="true" stored="true" required="true" />

<field name="categoryId" type="long" indexed="false" stored="true" />

<field name="contents" type="string" indexed="true" stored="true" />

</fields>

 

- name(필수) : 필드의 이름

- type(필수) : <types>영역에 미리 정의된 데이터 타입

- indexed : 인덱싱 여부(true 인덱싱이 되어 검색 정렬이 가능)

- stored : true, 데이터를 보관한다.

- required : 필수로 입력되어야 하는 필드일 경우 true 설정

- compressed : true이면, gzip 이용하여 데이터를 압축해서 저장한다.

                (TextField StrField 타입만 가능하다. )

- multiValued : true이면 해당 필드는 document 마다 여러 개의 값을 가질 있다.

 

 

2.1.2 고유키 설정

 

고유키로 지정된 필드는 중복된 값이 인덱스에 존재할 없고, 만약 인덱싱 시에 동일한 값이 이미 존재한다면, 오래된 문서에 대한 인덱싱 정보는 삭제되고 새로운 정보가 남게 된다.

 

<uniqueKey> docId </uniqueKey>

 

(설정된 필드는 반드시 인덱싱 되어야 한다.)

 

 

2.1.3 기본 검색 필드 설정

 

검색 특정 필드가 지정되지 않은 겨우 기본적으로 검색 대상이 필드를 설정한다.

 

<defaultSearchField>text</defaultSearchField>

 

 

2.1.4 검색 연산자 지정

 

복수개의 단어 검색 적용할 연산자를 설정한다.

(AND -> 모든 단어를 포함, OR –> 하나 이상의 단어를 포함한 컨텐츠 검색)

 

<solrQueryParser defaultOperator="OR"/>

 

 

2.1.5 멀티 인덱싱 설정

 

여러 개의 필드를 하나의 필드처럼 사용해야 경우에 아래와 같이 설정한다. (4번의 검색 연산자 적용 )

 

<copyField source="title" dest="text"/>

<copyField source="contents" dest="text"/>

 

 

2.2 필터 매핑 설정

 

WEB-INF/web.xml 파일에서 아래처럼 디스패처 필터의 매핑 설정을 추가한다.

 

<filter>

    <filter-name>SolrRequestFilter</filter-name>

    <filter-class>org.apache.solr.servlet.SolrDispatchFilter</filter-class>

</filter>

 

<filter-mapping>

    <filter-name>SolrRequestFilter</filter-name>

    <url-pattern>/*</url-pattern>

</filter-mapping>

And

오픈소스 검색서버 SOLR 설치 메뉴얼 1

|

프로젝트 적용을 위해 조사하고 정리했던 내용 공개합니다.
문제 소지가 있다면 삭제하겠습니다.
하나의 프로젝트에 적용하기 위한 방법이므로,
경우에 따라 적용 방법이 이 메뉴얼과 다를 수 있습니다.


1. SOLR 설치

 

1.1 환경 요구사항

- 자바5 또는 이상을 필요로 한다.

- 톰캣, 제티, 레진과 같은 서블릿 컨테이너가 필요하다.

 

 

1.2 다운로드

 

아래 경로를 통해 검색서버 SOLR 최신 버전을 다운로드한다. (현재 최신버전은 apache-solr-1.3.0)

 

http://mirror.apache.or.kr/lucene/solr/

 

 

1.3 기본 디렉토리 설정

 

SOLR 구동시키기 위해서는 ‘SOLR 디렉토리 설정해야 한다. 임의의 경로를 설정하지 않을 경우 디폴트 디렉토리로 JVM’s Current Working Directory($CWD/solr) 자동 설정된다.

 

디렉토리 설정을 하기 위해 아래의 명령으로 자바 시스템 프로퍼티로 지정해야한다.

 

 > export JAVA_OPTS="$JAVA_OPTS -Dsolr.solr.home=/my/custom/solr/home/dir/"

 

다운로드 받은 압축파일을 압축 해제한 , ‘apache-solr-1.3.0/example/solr/’ 디렉토리 안의 모든 디렉토리 파일들을 위에서 설정한 ‘SOLR 디렉토리 복사한다.

 

 

1.4 라이브러리 설치

 

Solr 사용하기 위해서는 개의 라이브러리를 추가해야 한다. 압축을 풀면 나오는 아래의 라이브러리들을 적용하고자 하는 프로젝트의 ‘/WEB-INF/lib/’ 디렉토리로 이동시키면 된다.

 

-       apache-solr-1.3.0/lib 폴더 아래의 모든 라이브러리 파일

-       apache-solr-1.3.0/dist/apache-solr-common-1.3.0.jar

-       apache-solr-1.3.0/dist/apache-solr-core-1.3.0.jar

-       apache-solr-1.3.0/dist/apache-solr-dataimporthandler-1.3.0.jar (DataImportHandler사용시 필요)

-       apache-solr-1.3.0/dist/apache-solr-solrj-1.3.0 (Solrj API 사용시 필요)

-       apache-solr-1.3.0/dist/solrj-lib 폴더 아래의 모든 라이브러리 파일 (Solrj API 사용시 필요)

 

* 중복되는 라이브러리가 존재할 경우 가장 최신의 것을 사용해야 한다. 그렇지 않으면 예상치 못한 오류가 발생할 있다.

 


And

시작이란 추억.

|


고2때였던걸로 기억한다.
게임 제작자가 되고 싶었던 나는 게임 시나리오 대회에도 나가보고
프로그래밍 공부도 시작했었다.
그게 내가 처음 프로그래밍을 시작하게 된 계기였다.

처음에는 C언어 입문서를 사서  Turbo C라는 도스용 컴파일러로 공부를 했었다.
하지만 슬슬 도스프로그램에 대한 답답함이 밀려왔고,
비주얼 C++이란 녀석의 존재를 알게 되어
용산에 가서 만원-당시 나에겐 거금이었던-을 주고 불법씨디를 사왔었다.
(그때만해도 온라인상의 어둠의 경로가 그리 활성화되어있지 않았다ㅋ)

그녀석이 바로 저 녀석이다.
나를 플밍의 세계로 끌어들인 녀석...
방정리 하다가 발견했는데 1년 정도 프로그래머로 일해본 뒤에 보니 감회가 새롭다..
난.. 저녀석에게 감사해야할까, 원망해야할까..? ㅋㅋ

그 때부터 꾸준히 공부했으면 지금쯤 난 엄청난 실력자가 되있었을 텐데
라는 생각을 하며
미소인지 먼지 모를 표정을 지어본다. ㅎㅎ

(불법을 써서 미안하다는 말을 MS에 뒤늦게 남아 전달하고싶다-_-ㅋ
가난한 고등학생이였으니 이해바람ㅋ)

'작업노트 > Developer's Diary' 카테고리의 다른 글

빨래를 해야겠어요  (0) 2010.10.05
면접을 보고 왔다..  (0) 2010.08.24
습관  (0) 2008.11.04
묻기, 확실히 하기  (0) 2008.09.19
팀 작업을 할때에...  (0) 2008.09.04
And

scrollHeight / clientHeight / scrollTop

|

http://www.sunspell.net/160

좋은 글이다..
And

[SOLR] CustomClobTransformer

|
SOLR에서 ClobTransformer를 1.4부터 지원해준다고 한다.
덕분에 오라클의 CLOB타입을 인덱싱하려면 커스텀으로 트랜스포머를 만들어야 한다.
그래서 만들었다.
허접하게 나마.

====================================================================================

import java.io.BufferedReader;
import java.util.List;
import java.util.Map;

import oracle.sql.CLOB;

import org.apache.solr.handler.dataimport.Context;
import org.apache.solr.handler.dataimport.Transformer;

/**
 * CLOB to String 변환을 위한 커스텀 트랜스 포머 
 *
 * @since 2009. 3. 12.
 */
public class CustomClobTransformer extends Transformer {

    /* (non-Javadoc)
     * @see org.apache.solr.handler.dataimport.Transformer#transformRow(java.util.Map, org.apache.solr.handler.dataimport.Context)
     */
    public Map<String, Object> transformRow(Map<String, Object> row, Context context) {
        List<Map<String, String>> fields = context.getAllEntityFields();
        
        for (Map<String, String> field : fields) {
            String clob = field.get("clob");
            if ("true".equals(clob)) {
                String columnName = field.get("column");

                CLOB value = (CLOB)row.get(columnName);
                
                StringBuffer strOut = new StringBuffer();

                String str = "";
                try {
                    BufferedReader br = new BufferedReader(value.getCharacterStream());
    
                    while ((str = br.readLine()) != null) {
                        strOut.append(str);
                    }
                } catch (Exception e) {
                    e.printStackTrace();
                }
                
                String stringValue = strOut.toString();
                
                row.put(columnName, stringValue);
            }            
        }
        
        return row;
    }
}
And

NoClassDefFoundError

|
And

WOA - Web Oriented Architecture 관련 글

|
And

CSV파일

|

출처 : http://narrowway.tistory.com/43


CSV파일

Comma Separated Value의 약자로,
데이타를 컴머(,)단위로 잘라서 나열한 파일 형태.

컴머단위로 잘라져 있으므로, 텍스트 파일로도 읽을수 있지만,
엑셀파일로도 바로 읽을수 있다는 장점이 있어서
많은 데이타 관련 소프트웨어에서 사용되고 있다.

1. 자바에서의 구현

    // 파일 다운로드 형식 지정
    res.setContentType("application/octet-stream;charset=Shift_JIS");
    res.setHeader("Content-Disposition","attachment; filename="+selected_Table+"_"+date+".csv");
    PrintWriter out=res.getWriter();

    // 데이타를 DB로 부터 읽어서 CSV로 만드는 과정
      query = "select * from " + selected_Table;
     
      PreparedStatement pstmt = con.prepareStatement(query);
      rs = pstmt.executeQuery();

      String strData = "";
      while(rs.next()){
       
        for(int i=0 ; i < selectedFieldList.length ; i++){
     strData = rs.getString(Integer.parseInt(selectedFieldList[i])+1);
     if(strData==null){strData="";}
      out.print( new String( strData.getBytes("8859_1"),"Shift_JIS") );
            out.print(i<selectedFieldList.length ? "," : "");
        }
        out.print(System.getProperty("line.separator"));
      }

      위와같이 컴마와 System.getProperty("line.separator")를 이용해서 제어가 가능하고,
      문자열처리과정을 일본어의 경우 new String( strData.getBytes("8859_1"),"Shift_JIS")
      처럼 해결해 주면 된다.

2. 주의할 점

     CSV파일의 가장 주의점이라 한다면 데이타 자체에 컴마나 줄바꿈 표시가 들어가 있는 경우로,
     이때는 의도하지 않는 데이타상의 구분이 생겨버리므로,
     향후 엑셀로 읽으려 할때에는 전체 테이블이 깨져버린다.
    
      private String checkDataFormat(String data){

           String returnVal = data;
   
           returnVal = returnVal.replaceAll(","," ");
           returnVal = returnVal.replaceAll("\n"," ");
           returnVal = returnVal.replaceAll("\r"," ");
           returnVal = returnVal.replaceAll("\r\n"," ");
   
           return returnVal;
     }

     와 같은 방법으로 데이타 치환을 해주어야 한다. 

And

[검색]Solr 관련

|
And

[펌] 2년차 개발자가 알아야 할 기본 지식

|


=====================================================================

1. 서버단 기술

- 자바 프로그래밍
. 객체 지향 프로그래밍 기본 이해(추상화, 다형성, 캡슐화)
. 중요한 자바 API 활용 가능(Collection API, Reflection API, generic, annotation)
. 많이 쓰이는 기본 디자인 패턴 이해(VO 패턴, MVC 패턴, FILTER 패턴 및 OBSERVER 패턴)

- Servlet/JSP
. 브라우저와 서버간의 통신에서 HttpServletRequest/Response 객체 생명 주기와 중요 메소드 이해
. 웹 어플리케이션 구조 및 배포 방법의 이해
  (filter, listener, Servlet 배포 방법 및 프로그래밍 이해 --> web.xml의 이해)
. JSTL과 EL 이해(JSP 1.2와 2.0차이점 이해) 및 Custom Tag handler 작성 가능

2. 데이터베이스단 기술

- Database
. 관계형 데이터 베이스 논리/물리 모델링 설계 가능(ERD 작성 가능)
. 적당한 수준의 정규화/역정규화를 통한 기본적 성능 향상 방법의 이해
. 적절한 인덱싱과 인라인 쿼리의 사용을 통한 기본 SQL Tunning 가능(plan 사용)
. Hibernate와 iBatis등의 OR-Mapping 프레임웍의 등장 배경과 사용 이유에 대한 이해

3. 화면단 기술

- Ajax/HTML/CSS/DOM/JavaScript
. JSON을 이용한 기본적 AJAX 프로그래밍 가능
. XHTML과 HTML의 차이점과 등장배경을 이해하고 코딩 가능 
. DOM API를 이용해서 동적인 화면을 표현/제어

4. 광범위하게 쓰이는 프레임워크 사용법 기본 이해

- 오픈 프레임워크 사용 방법의 이해(개발자 수준에서)
  . Struts : 전형적인 MVC패턴으로 구성된 스트럿츠의 구조를 파악하고 간단한 게시판을 코딩할 수 있는 수준
  . Spring : 스프링 혹은 EJB 컨테이너가 빈을 관리함으로써(Ioc) 얻는 잇점과 이를 통해 이루어지는
             다양한 엔터프라이즈급 서비스(AOP 등)등을 이해하고 사용할 수 있는 수준   
  

5. 최소 토익 750 정도 수준의 영어 실력(각종 API의 원활한 참조를 위해)
   - 최소 750점 이상 의 토익 실력(Reading 400점 이상 --> 기본적 독해가 가능한 최소 실력)
   - A4지 한장분량의 (영자신문수준의) 영문을 10분 이내로 읽고 90% 이상 이해 가능


* 하드정리하다가 2년전에 이곳에 올렸던 게시물을 발견해 약간 수정후 다시 올립니다. (이전껀 지워졌더군요)

* 다시 생각해 봐도 2년차 웹 개발자 수준이라면 반드시 알아야 할 내용만 나열했습니다.
  솔직한 심정으로, "실무에 투입할 신입개발자" 스펙으로서 알아야할 지식이라 생각됩니다.


============================================================================

And
prev | 1 | 2 | 3 | 4 | 5 | 6 | ··· | 13 | next