FAQ자주 묻는 질문들 total 17

A.

미르서치 엔진은 검색 후 해당 문서의 요약된 내용을 보여주는 기능을 갖고 있습니다. 이 요약문은 미르서치 엔진의 지능형 요약 알고리즘에 의해 특정 문단을 자동으로 추출하여 생성하게 됩니다. 요약문은 크게 정적 요약과 동적요약으로 나눌 수가 있습니다. 정적요약은 색인시간에 문서내의 단어들의 출현 빈도 및 통계를 이용하여 요약문을 추출하는 것을 이야기 합니다. 이렇게 추출된 정보는 해당 문서에 항상 고정된 요약문을 갖기 때문에 정적 요약이라고 합니다. 반면 동적요약은 검색시간에 사용자가 제공한 검색어를 기반으로 요약문을 생성하게 됩니다. 같은 문서라 하더라도 동적요약에서는 검색어에 따라 다른 요약문을 제공합니다.

A.

미르서치 엔진의 MS-SQL과의 연동 모듈은 아무 설정이 없으면 기본 Port인 1433번으로 동작됩니다. 보안의 이유나 MS-SQL Express와 같이 기본 Port번호를 사용하지 않는 경우는 다음과 같은 방법으로 연동 모듈의 Port번호를 바꿀 수 있습니다.

MS-SQL서버의 IP주소를 적는 부분에 IP주소를 적고 그 뒤에 Comma(,)를 붙여 적은 후 Port번호를 적습니다.
예) server= 127.0.0.1,1473 현재 미르서치 엔진에서 제공되는 MS-SQL 연동 모듈들은 MS-SQL 2000,2005, Express 모두를 지원합니다.

A.

oragetkey, oracle accessor, oracl e observer를 사용할 때 TNSNAME을 적는 부분이 있습니다. 이부분은 오라클 클라이언트의 tnsnames.ora에 설정된 이름을 지정하는 것이 원칙입니다. 어떠한 이유에서 tnsnames.ora파일에 DB서버를 등록할 수 없는 경우 oragetkey, oracle accessor, oracle observer 의 TNSNAME을 적는 부분에 다음과 같이 설정함으로서 DB 서버의 지정이 가능합니다. 참고로 일반적으로 오라클의 TCP서비스 Port번호는 1521입니다.

[형식1]
//디비서버주소:포트/서비스이름

예) //192.168.1.10:1521/ORA10

[형식2]
(description=(address=(protocol=TCP)(host= 디비서버주소)(port=포트)) (connect_data=(SERVICE_NAME= 서비스이름)))

예)(description=(address=(protocol=TCP)(host=192.168.1.10)(port=1521)) (connect_data=(SERVICE_NAME=ORA10)))

A.

색인을 위해 oragetkey나 Oracle Accessor를 사용할 경우 한글코드가 ???와 같이 깨지는 경우가 있습니다. 이는 오라클의 내부 문자코드와 oragetkey나 Oracle Accessor에 설정된 문자코드가 일치하지 않아서 생기는 문제입니다. 이럴 경우 다음과 같은 방법으로 문자코드를 일치시켜서 정상적 수행이 가능합니다.

첫번째 오라클에 설정된 문자코드가 무엇인지를 확인합니다.
$ sqldba lmode=y SQLDBA> connect internal SQLDBA> select * from v$nls_parameters; PARAMETER VALUE -------------------------- ------------------------- "... ..... " NLS_CHARACTERSET KO16KSC5601 (or U S7ASCII)
▲ 데이타베이스 CHARACTERSET 확인
다음은 oragetkey나 Accessor에 영향을 미치는 NLS_LANG 환경변수를 확인합니다.

$ env ... NLS_LANG=American_America.US7ASCII
▲ 환경 변수의 NLS_LANG 확인

위의 데이터베이스와 환경변수에 설정된 문자코드가 동일한 경우에만 한글 데이타 처리에 문제가 없으며, 이것이 서로 다른 상태에서 한글 데이타를 조회할 경우에는 ??? 로 출력 됩니다.

서로 일치 하지 않는 경우 다음과 같은 방법으로 문자코드를 DB와 일치시켜 주면됩니다.

[UNIX/LINUX] Bourne shell, k -shell을 사용하는 경우 .profile을 수정한다. NLS_LANG = American_America.KO16KSC5601; export NLS_LANG c-chell을 사용하는 경우 .cshrc 혹은 .login 수정 setenv NLS_LANG American_America.KO16KSC5601 수정 후 다시 $env를 실행하여 변경되었는지 확인한다.

[WINDOWS] WINDOWS에서는 NLS_LANG이 REGISTRY에 기록되므로 REGISTRY EDITOR를 이용하여 수정해야 합니다. MS DOS 창으로 나가서 REGEDIT.EXE 실행 또는 시작 -> 실행 -> regedit -> HKEY_LOCAL_MACHINE -> SOFTWARE -> ORACLE 오른쪽 마우스 버튼을 이용하여 NLS_LANG을 수정합니다. REGISTRY 변경 후에 컴퓨터를 REBOOTING 할 필요는 없습니다

* 서로 다른 character set 을 갖는 DB를 access 하는 client에서는 다음과 같은 setting 을 하면 편리합니다. 예를 들어서 SERVER의 character set이 US7ASCII이고 PC의 NLS_LANG이 American_America. KO16KSC5601과 같이 서로 다르게 설정되어 있는 경우 다음을 각 client의 환경에 추가하면 한글 문제가 해결됩니다.
ORA_NLS_CHARACTERSET_CONVERSION=NO_CHARACTER_SET_CONVERSION

A.

일반적으로는 <and>와 <near>검색시는 검색 건수가 동일할 경우가 많습니다. 기본적인 <and>연산자는 문서에서 추출된 모든 키워드를 대상으로 동시에 존재해야 한다는 조건인 반면 <near>검색은 두 검색어의 인접도를 따지는 연산자입니다. 여기서 <near>검색시 두 단어가 서로 다른 필드에 존재한다면 검색 결과에서 제외됩니다. 예를 들어 “A<near>B”의 검색을 실시했을 경우 어떤 문서가 A라는 단어는 title필드에 존재하고 B라는 단어는 content필드에 존재한다면 이들 두 단어 사이의 인접도는 계산할 수 없으므로 검색 결과에서 제외합니다. 반면 이와 같은 경우라도 “A<and>B”연산은 검색 결과로서 제시하게 됩니다.                

A.

미르서치 엔진은 검색시 sortspec에 score를 사용했을 경우 엔진 내부의 Ranking 알고리즘(Search Model)을 이용하여 검색 된 각 문서를 점수화 하고 이를 통해 정렬합니다. 미르서치 엔진의 Ranking알고즘은 검색 모델 중 Vector Space 모델과 Extened Boolean모델 그리고 휴리스틱을 이용하여 점수화 합니다. 사용되는 휴리스틱으로는 문서 혹은 필드의 크기 대비 키워드의 점수를 정규화시키는 방법을 사용하게 됩니다. 이러한 계산 방법은 “layout.def”의 _MIR_SCORE_FIELD_NORMAL와 _MIR_SCORE_WORD_NORMAL 그리고 _MIR_DETAIL_SCORE_MAX 정의값들을 변경함으로써 사용자가 조절할 수 있습니다. 또한 연관도 점수를 변경하는 것으로는 각 필드에 정의한 weight옵션, bulk파일에 정의하는 mirrank필드 그리고 검색시 검색 키워드에 지정하는 가중치 지정 연산자등에 의해 영향을 받습니다.                

A.

Collection은 CPU의 Endian 방식이 같을 경우 호환하여 사용할 수 있습니다. 즉, Little Endian 플랫폼에서 생성한 Collection은 Little Endian의 다른 플랫폼에서 Big Endian 플랫폼에서 생성한 Collection은 Big Endian의 다른 플랫폼에 복사하여 사용할 수 있습니다. 단 복사한 Collection의 work디렉토리 안의 파일 및 폴더는 삭제하셔야 합니다. Intel x86, x64 CPU를 사용하는 플랫폼은 Little Endian이고 그 외는 일반적으로 Big Endian입니다. 단 IA64 CPU는 OS에 따라 Little Endian일수도 Big Endian일 수도 있으니 주의하십시오. 당연한 이야기 입니다만 같은 플랫폼의 Collection은 서로 호환가능합니다.                

A.

결론적으로는 에러메시지와 같이 검색클라이언트에서 검색서버쪽으로 연결을 할 수 없어서 나타나는 현상입니다. 이런 원인으로는 여러가지가 있으며 각기 해결방법 또한 다릅니다. 다음은 원인의 예와 해결 방법입니다.

원인 해결방법
검색서버가 실행되고 있지 않습니다. 검색서버의 리부팅 등 기타의 원인으로 실행되고 있지 않을 수 있습니다. 검색서버 프로세스가 있는지 확인하시고 없다면 검색서버를 실행 하십시오. 검색서버의 프로세스 이름은 Windows에서는 mirsearchserver.exe이고 UNIX/LINUX에서는 mirsearchsvr 입니다.
웹클라이언트의 검색서버의 IP 주소와 Port번호를 잘못 지정 하였습니다. 웹클라이언트(일반적으로 웹페이지)에서 SearchNew()함수에서 검색 서버의 IP주소와 Port번호를 확인하고 틀린경우 올바르게 고치십시오.
검색서버의 검색서버 포트가 파이어월이나 기타의 것으로 막혀 있다. 검색서버 쪽의 검색서버포트를 검색클라이언트 서버(일반적으로 웹서버)가 접근할 수 있도록 개방하여야 합니다.(일반적으로 검색서버가 사용하는 포트는 4002번입니다.)
Collection에 Lock이 걸렸습니다. 검색서버는 실행될 때 Collection을 오픈한 후에 클라이언트의 접속을 기다리게 됩니다. 만약 Collection에 Lock이 걸린 경우 서비스 대기상태로 가기전에 Block되어 있는 경우가 있습니다. 이런 경우 검색서버를 내리고 Collection의 Lock을 해제 하신 후 다시 검색 서버를 실행하십시오. Lock해제에 대해서는 이전 항목 Q2번을 참조하십시오.

A.

Collection을 scmir로 열었을 때 SC>프롬프트가 떨어지지 않고 멈춘상태로 30초 이상을 있다면 Lock에 걸린 상태라고 의심할 수 있습니다. 이런 경우 다음의 방법으로 Lock을 해제 하십시오.
- collection의 work디렉토리 안의 모든 파일 및 폴더를 삭제합니다. - collection의 temp디렉토리 안의 모든 파일을 삭제합니다. - mircollman 툴을 이용하여 Lock을 해제하십시오. Collection의 이름이 test.col이라면 Lock을 해제하는 일반적인 명령은 다음과 같습니다. 예) mircollman test.col -unlock

A.

“layout.fld”의 특정 필드에 /weight=80 과 같이 가중치를 줄 수 있습니다. 이는 검색시 해당 필드에서 검색된 단어가 있을 경우 그 문서에 가중치를 주겠다는 의미입니다. 단, 이 가중치는 50점을 기준으로 더 낮게 주어 질 수 있습니다. 즉 50점은 아무 가중치를 주지 않겠다는 의미이며 50이상은 양의 가중치를 50점 이하는 음의 가중치를 의미합니다. 또한 이 점수는 단순히 더해지거나 절대적인 값은 아니며 미르서치 엔진의 내부 Ranking 알고리즘에 얻어진 값에 비율로서 적용됩니다. 즉, 50 보다 낮은 값을 가중치로 설정한 경우 설정하지 않을 때보다 더 낮은 점수 갖을 수 있습니다.