질문하는김에 단어 검색관련해서 한개만 더 문의드립니다 0 5 708

by 새우볶음 [SQL Query] 검색 [2019.03.19 20:58:35]


조건문에서 단어를 검색할때

 

예를 들면 '나이키 신발' 이라고 검색하면

 

저 두단어가 모두 포함한 데이터가 먼저 나오고 그다음에 나이키만 포함된것 이후에 신발만 포함된것 이렇게 나오게끔 검색 및 정렬하려면 where조건문을 어떻게 줘야할까요?

오라클이라 REGEXP_LIKE을 써서 어떻게 하면 될것같은데 영 생각이 안나네요 ㄷㄷ

알려주시면 감사드리겠습니다(__)

 

by jkson [2019.03.19 22:44:05]
with t as
(
select '나이키의 신발' txt from dual union all
select '나이키의 모자' from dual union all
select '나이스한 신발' from dual union all
select '나이스한 모자' from dual
)
--글자 그대로 파라메터 받을 때
select txt
  from t,
      (select  regexp_substr(txt,'[^ ]+',1,level) search, level lv
         from (select '나이키 신발' txt 
                 from dual) 
       connect by level <= regexp_count(txt,' ') + 1)
 where instr(txt,search) > 0 
 group by txt
 order by count(search) desc, max(lv)

--프로그램단에서 단어 잘라서 파라메터로 던져줄 때
select txt
  from t
 where instr(txt,'나이키') > 0 or instr(txt,'신발') > 0
 order by regexp_count(txt,'나이키')||regexp_count(txt,'신발') desc

by 우리집아찌 [2019.03.20 10:03:46]

SQL로 처리할수도 있지만

검색엔진 같이 쓰시려면 따로 구성해서 쓰시는게 좋습니다.


by 새우볶음 [2019.03.20 10:17:08]

by jkson님 답변감사드립니다(__)

우리집아찌님 따로 구성한다는게 정확히 어떤 의미인가요? 상품당 검색어를 따로 등록해서 관리하는게 좋다는 말씀이신지?


by 우리집아찌 [2019.03.20 10:46:49]

검색엔진 같은경우 검색어 테이블 따로 가져갑니다.

따로 등록하셔도 되고 BATCH로 검색어를 등록해도 됩니다.

데이터 양이 많지 않으면 SQL로 처리해도 상관없을것 같고

양도 많고 처리속도도 느리다하면 따로 검색어 테이블 가져가시는게 좋습니다.

 


by 새우볶음 [2019.03.20 11:10:26]

답변감사합니다^^ 많은 도움이됐습니다

댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입