오라클 클럽 회원, 형님(누님) & 동생님들 안녕하십니까
검색 후 관련 된 단어 제외에 대한 고찰을 하다가 도움을 받고자 올립니다.
아래 테이블에 [검색통합] 컬럼에는 상품이름+상품메이커+상품태크+상품광고명이 들어 갑니다.
상품 테이블
상품이름 |
상품메이커 |
상품 태그 |
상품광고명 |
검색통합 |
저렴한 9,990원 겨울신발 |
Ora |
신발,운동화 |
신으면 날라당겨요 |
............ |
겨울 옷이 멋져요! |
BingBang |
옷, T, 잠바 |
올겨울 따뜻하게!! 겨울을... |
.............. |
겨울 이번달 베스트 셀러 |
OracleClub |
책, DB, SQL |
멋진 커뮤니티 책 모임 |
............ |
........... |
........... |
.......... |
........ |
.......... |
5개의 컬럼이 존재 합니다.
자료는 10만개가 됩니다.
검색의 목적은 찾고자 하는 [단어]를 입력 후 제외 하고자 하는 단어를 복수로 입력하여,
관련 단어가 있으면 제외를 시켜 합니다.
검색의 첫번째 조건은
상품이름 + 상품메이커 + 상품 태그 + 상품광고명 컬럼 중
해당 검색어가 있는 것을 찾는 것 입니다.
(여기에 관련 된 해결은 CTX Domain Index를 [검색통합]에 걸어서 Contains 검색으로 하였습니다.
다른 방법이 있으시다면 조언을 해 주시기 바랍니다)
=> 검색어 : 겨울
2번째 조건은
상위 "겨울"을 검색한 내용들 중에 "잠바,책,DB,모임" 이라는 단어가 있으면
목록에서 제외를 시켜야 되는 작업 입니다.
제외 단어가 적게는 0개에서 많게는 10개이상 나올수 있습니다.
이러한 제한이 걸린 검색을 할때 어떻게 해결 해야 될까요?
1번째 조건이미 발동되었다고 생각하고 생각해 보셔도 됩니다
WITH TBL_T AS
(SELECT '저렴한 9,990원 겨울신발 Ora 신발,운동화 신으면 날라당겨요 ............' total_word FROM dual UNION all
SELECT '겨울 옷이 멋져요! BingBang 옷, T, 잠바 올겨울 따뜻하게!! 겨울을... ..............' FROM dual UNION all
SELECT '겨울 이번달 베스트 셀러 OracleClub 책, DB, SQL 멋진 커뮤니티 책 모임' FROM dual)
SELECT *
FROM TBL_T
조건은 => 잠바,책,DB,모임 가 있으면 리스트에서 제외 되어야 합니다.
|
NOT Contains 는 해 봤지만 속도가 영 꽝이었습니다. 차라리
NOT LIKE '%단어%' 를 LOOP를 돌리는게 빠를 정도 입니다.
여기서 생각해야 될것은 오라클의 SGA영역에 무리가 되지 않도록
바인딩으로 인한 SOFT PARSE를 유도 하는 것입니다.
좋은 방안이 있다면, 조언 쩜 해주세요^ㅡ^; 새벽에 뻘짓하는 호야 올림