묻고답하기

검색엔진을 구현하려고 합니다..

 

테이블 설계를

 

article_keyword  // 키워드 테이블 (ex: 컴퓨터,노트북,의류 등등)

article_hash  // Keyword와 document를 연결해주는 hash table

article_documents  // 실제 문서

 

article_keyword table structure

------------------------------------------------------------------

key_id       value

0              컴퓨터

1              노트북

2              의류

3              쇼핑몰

-------------------------------------------------------------------

 

article_hash table structure

-------------------------------------------------------------------

doc_id    key_id

 1                0

 1                1

 1                2

 1                3

-------------------------------------------------------------------

 

article_documents table structure

-------------------------------------------------------------------

dic_id     contents

 1            컴퓨터 노트북 의류 쇼피몰...

-------------------------------------------------------------------

 

위처럼 테이블 설계가 되어있습니다.

XML QUERY를 이용해서 JOIN을 하려니 이해가 안되는 부분이 있습니다.

XE에서는 XML table노드에서 table type을 left join으로 해서 outer join종류는 가능하긴한데,

명시적으로 inner join이 가능하게 되어있지는 않도록 설계 되어있더군요.

 

다만 문제는 condition값을 추가할때 var값이 없을 경우엔 해당 condition이 query문에는 추가가 되지 않는것으로 알고 있습니다만,

 

inner join시 검색하려는 키워드값은 가변적이므로 이에 따른 join되는 테이블의 갯수를 유동적으로 처리가 가능한지입니다.

 

예를 들어 xml query문을 keyword_01 keyword_02로 분류하여 and조건으로 묶어 작성하였다면,

고정적인 쿼리문에서는 테이블 2개가 조인이 되어있는 상태인데

키워드가 1개만 입력이 되었을 경우엔 condition이 지정되지 않아 keyword_02의 테이블의 모든 데이터를 가져오게되는 일이 생겨버립니다.

 

xml쿼리문 안에 if문을 넣을수도 없고 이럴땐 어떤식으로 처리를 해야 키워드 갯수에 따라 유동적으로 추가하거나 수정할 수 있을련지요..

 

추가적으로,

 

문서가 입력될때마다 키워드를 분류하여 article_keyword테이블에 단어별로 구분하여 삽입하게 되어있습니다.

하지만, 이때 반복문을 통해서 쿼리를 날려주다보니 서버 과부하가 걸리는 일이 생기더라구요..

 

그래서 insert문에서 삽입되는 다중데이터를 한번의 query안에서 처리가 가능하던데,

XE에서는 XML QUERY를 어떤식으로 작성해야 가능한가요?

기존 classes에 있는 DB모듈을 변경해야 하는건지도 궁금합니다..

 

두서없이 작성한거라 앞뒷말이 잘 않맞지만 대략적으로 요약하자면,

 

1. XML QUERY작성시에 var로 연결되는 조건절에서 검색하려는 키워드가 없을경우에 join테이블을 유동적으로 추가하거나 삭제할 수 있는 방법.

 

2. XML QUERY에서 다중 데이터를 insert할때 한번의 QUERY문으로 다중 데이터를 서버 과부하없이 넣는 방법.

(기존 검색엔진 구현시에는 수십~수백개 되는 키워드를 어떤식으로 처리를 하는지요? 지금 제가 구현해놓은것처럼 반복문안에 쿼리를 계속 날려주는 방식은 아닐것으로 예상됩니다..)

 

현직 개발자 분들께서 좋은 방법이 있다면 말씀해주세요^^

 

 

 

 

 

글쓴이 제목 최종 글
XE 공지 글 쓰기,삭제 운영방식 변경 공지 [16] 2019.03.05 by 남기남
okgosu xe 1.1.3 버전 사용자인데 1.4.0으로 올려도 문제가 없을까요? [2] 2010.01.26 by 젠이
총총총끼싸 최신글 파란색글씨... file  
최재호빵 로그인창에 회원정보보기,스크랩보기,저장함보기 등을 클릭하면  
개발. 게시판에서 분류를 사용하려면 어떻게 해야 하나요..? [1] 2010.01.26 by 젠이
왕대발이 MYSQL의 데이터를 변수에 활당하려면......  
홍이테 XE를 완전히 재설치 하려고 하는데 그동안 임시페이지를 뛰우려면 [1] 2010.01.26 by 젠이
mjei 인증메일도 오지않고 관리자 페이지가... [1] 2010.01.26 by 백성찬
오델라가루 xe 폴더 이전시 사이트 접속시 에러문제 [1] 2010.01.26 by 백성찬
jj_king 메인 화면에 위젯사용 최근 게시물 추출시 글자만 추출방법 [1] file 2010.01.26 by 백성찬
이유진349 게시판 스킨을 이런식으로 만들고 싶은데 .. 어찌해야 할까요..ㅠ.ㅠ [1] file 2010.01.26 by 백성찬
kates 홈페이지 꾸밀때 왼쪽/오른쪽 꾸미는 방법 좀요..  
김상권185 특정그룹회원출력 위젯에서 확장변수를 출력하고 싶습니다  
총총총끼싸 files > config 서버이전후 db.php 문제 ㅠㅠ [1] 2010.01.26 by Gekkou
총총총끼싸 files 폴더삭제가 안됩니다. [1] 2010.01.26 by 라르게덴
랄랄이 하이퍼 링크 걸기  
바비쿨 회원가입 페이지는 어디에 있나요? 초보질문 [2] 2010.01.26 by 라르게덴
이성희711 라이센스 관련해서 질문드립니다. [1] 2010.01.26 by 라르게덴
뽀칠이 목록에 확장게시판만 표시할때.? [1] 2010.01.26 by 라르게덴
부푸러 ID 값 넘기는 방법? [1] 2010.01.26 by 라르게덴
solavity XML QUERY에서 JOIN시 질문드립니다. [1] 2010.01.26 by 라르게덴