검색 쿼리에 관한 질문 입니다 채택완료
이런 쿼리가 가능할지 모르겠는데
기본 게시판 검색을 하면
검색된 리스트 만 출력 됩니다
그런데 원하는건
검색된 게시물만 출력 되는게 아니라
검색된 게시물이 출력된 후
그 외 게시물이 출력 되는 ..
그러니까 .. 정리하자면
총 100개의 게시물이 있을때 김치라는 단어로 검색을 합니다.
김치 로 검색된 게시물이 총 10개라면
10개가 상위로 먼저 출력되고 그 이후 90개가
리스트로 출력..
이렇게 쿼리가 가능할까요??
답변 6개
말그대로 그냥 전체 결과가 나오는데 검색어 일치값이 있을경우에 우선순위를 준다고 하면
order by 부분을 case when 검색어일치 then 1 else 2 형태로 가면 되지 않을까하는
막연한 생각입니다.. 다른 필드로는 많이 써봤습니다만..검색어로는 해본적이 없어서
실코딩이 될지는 모르겠네요...
https://im-first-rate.tistory.com/105
한번 참고 해 보세요
답변에 대한 댓글 1개
댓글을 작성하려면 로그인이 필요합니다.
검색엔진을 사용하시면 처리 가능합니다.
매칭된 단어수에 따라서 점수를 계산하고, 해당 점수로 order by 를 하시면 됩니다.
MySQL 과 같은 dbms에서는 서브쿼리를 사용해야 하는데, 이경우 게시글수가 많은 경우 속도저하와 서버부하가 심하게 됩니다. 검색엔진은 이런 기능을 내장하고 있음으로 속도나 성능에 영향을 주지 않으면서 처리가 가능합니다.
그런데 굳이 만들 필요가 있나요? 현재 기술로는 안된다고 하시는게..
답변에 대한 댓글 1개
포기하라고 해야 할것 같습니다 ^^;;;;
댓글을 작성하려면 로그인이 필요합니다.
검색을 해서 나온 값의 no가 1, 3, 5, 10이라고 가정을 합니다.
전체 쿼리문에 ORDER BY만 저렇게 넣으면 되지 않을까 싶습니다. 쿼리를 두 번 날려야 하는 번거로움이 있겠지만요.
SELECT * FROM 테이블 ORDER BY FIELD(`no`, 1, 3, 5, 10), 이후 원래 조건
이런 식으로 하면 되지 않을까 싶습니다.
답변에 대한 댓글 1개
게시물과 검색 결과가 적을 때에는 좋은 방법 같긴한데 만약 검색된 no 가 100개가 넘는다면 문제는 없을까요??
댓글을 작성하려면 로그인이 필요합니다.
쿼리 날릴때 검색어 일치시에는 0 아닐때는 1 로 해서 필드를 추가, 예들 들어 order_seq?
그런다음 order by order_seq, 원래 정렬 조건
정도로 하면 되겠네요
답변에 대한 댓글 4개
쿼리 플랜을 찍어봐야 알겠지만 한 행에 대해서만 처리 되는거고 결국 order by 하는 작업량 말곤 별로 추가 될게 없어 보입니다.
제가 말한 건 한방쿼리로 해결하는 방법이라서
따로 부담이 더 가거나 하지는 않을거라는 뜻입니다.
쿼리를 조금 조정하는것으로 충분히 가능할거라 예상됩니다.
댓글을 작성하려면 로그인이 필요합니다.
쿼리가 한방에 될지는 잘 모르겠고
원하는데로 구현만 억지로한다면
검색어가 포함된 쿼리
검색어를 제외한 쿼리 2개 날려서 뿌리면 되겠네요
답변에 대한 댓글 1개
댓글을 작성하려면 로그인이 필요합니다.
그러니까 .. 정리하자면
총 100개의 게시물이 있을때 김치라는 단어로 검색을 합니다.
김치 로 검색된 게시물은 10개가 상위로 먼저 출력되고 그 이후 90개가
리스트로 출력..
---------------------------
조금 말이안되는게
검색이라는게 그 단어를 검색하는것인데
김치를 검색하면 게시물이 10개가 있다면
10개만 검색이 되어야 맞는거 아닐까요?
10개는 김치가 나오고 아래쪽은 다른 게시물이 나와야한다는건 좀 이상하네요.
답변에 대한 댓글 1개
댓글을 작성하려면 로그인이 필요합니다.
답변을 작성하려면 로그인이 필요합니다.
로그인