검색 쿼리에 관한 질문 입니다

검색 쿼리에 관한 질문 입니다

QA

검색 쿼리에 관한 질문 입니다

본문

이런 쿼리가 가능할지 모르겠는데

 

기본 게시판 검색을 하면

검색된 리스트 만 출력 됩니다

 

그런데 원하는건 

검색된 게시물만 출력 되는게 아니라

 

검색된 게시물이 출력된 후 

그 외 게시물이 출력 되는 .. 

 

그러니까 .. 정리하자면

총 100개의 게시물이 있을때 김치라는 단어로 검색을 합니다.

김치 로 검색된 게시물이 총 10개라면

10개가 상위로 먼저 출력되고  그 이후 90개가 

리스트로 출력..

 

이렇게 쿼리가 가능할까요??

이 질문에 댓글 쓰기 :

답변 6

말그대로 그냥 전체 결과가 나오는데 검색어 일치값이 있을경우에 우선순위를 준다고 하면  

order by 부분을 case when 검색어일치 then 1 else 2 형태로 가면 되지 않을까하는

막연한 생각입니다.. 다른 필드로는 많이 써봤습니다만..검색어로는 해본적이 없어서

실코딩이 될지는 모르겠네요...

 

https://im-first-rate.tistory.com/105

한번 참고 해 보세요

 

 

그러니까 .. 정리하자면

총 100개의 게시물이 있을때 김치라는 단어로 검색을 합니다.

김치 로 검색된 게시물은 10개가 상위로 먼저 출력되고  그 이후 90개가 

리스트로 출력..

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

조금 말이안되는게

검색이라는게 그 단어를 검색하는것인데

김치를 검색하면 게시물이 10개가 있다면

10개만 검색이 되어야 맞는거 아닐까요?

10개는 김치가 나오고 아래쪽은 다른 게시물이 나와야한다는건 좀 이상하네요.

쿼리가 한방에 될지는 잘 모르겠고

원하는데로 구현만 억지로한다면

검색어가 포함된 쿼리

검색어를 제외한 쿼리 2개 날려서 뿌리면 되겠네요

쿼리 날릴때 검색어 일치시에는 0 아닐때는 1 로 해서 필드를 추가, 예들 들어 order_seq?

 

그런다음 order by order_seq, 원래 정렬 조건 

 

정도로 하면 되겠네요

어차피 like 검색은 하게 될텐데 속도 면에서는 큰차이가 없지 않나요?
쿼리 플랜을 찍어봐야 알겠지만 한 행에 대해서만 처리 되는거고 결국 order  by 하는 작업량 말곤 별로 추가 될게 없어 보입니다.

검색을 해서 나온 값의 no가 1, 3, 5, 10이라고 가정을 합니다.

전체 쿼리문에 ORDER BY만 저렇게 넣으면 되지 않을까 싶습니다. 쿼리를 두 번 날려야 하는 번거로움이 있겠지만요.

 

SELECT * FROM 테이블 ORDER BY FIELD(`no`, 1, 3, 5, 10), 이후 원래 조건

 

이런 식으로 하면 되지 않을까 싶습니다.

검색엔진을 사용하시면 처리 가능합니다.

매칭된 단어수에 따라서 점수를 계산하고, 해당 점수로 order by 를 하시면 됩니다.

MySQL 과 같은 dbms에서는 서브쿼리를 사용해야 하는데, 이경우 게시글수가 많은 경우 속도저하와 서버부하가 심하게 됩니다. 검색엔진은 이런 기능을 내장하고 있음으로 속도나 성능에 영향을 주지 않으면서 처리가 가능합니다.

 

그런데 굳이 만들 필요가 있나요? 현재 기술로는 안된다고 하시는게..

답변을 작성하시기 전에 로그인 해주세요.
전체 728
QA 내용 검색
filter #sql ×

회원로그인

(주)에스아이알소프트 / 대표:홍석명 / (06211) 서울특별시 강남구 역삼동 707-34 한신인터밸리24 서관 1404호 / E-Mail: admin@sir.kr
사업자등록번호: 217-81-36347 / 통신판매업신고번호:2014-서울강남-02098호 / 개인정보보호책임자:김민섭(minsup@sir.kr)
© SIRSOFT