게시판 목록을 가나다/ABC별로 볼 수 있도록 쿼리를 짜서 목록을 가로채려고 하고 있는데요.
쿼리별로
<condition operation="like_prefix" column="title" var="title_prefix" /> 또는
<condition operation="like_prefix" column="documents.title" var="title_prefix" pipe="and" />
이런 식으로 해서 다행히 영어로는 목록이 만들어지고 있습니다.
근데 문제는 한글이네요.
애석하게도 ㅋ 같은 값으로는 카로 시작하는 제목의 데이터를 뽑아주질 못합니다.
검색해보니 select * from documents where title >= '카' and title <= '킿'
같은 식으로 데이터를 뽑아주면 될 것 같은데요.
이것도 초성 검색으로는 말이 되는지 잘 모르겠고요.
암튼 이런 아이디어를 쿼리 xml 파일에 넣어줄 방법이 있을까요?
아니면 그냥 커스텀 쿼리를 짜야 하나요... (문서목록 커스텀 쿼리 겁나 빡센데ㅜ)
<condition operation="gte" column="title" var="title1" />
<condition operation="lte" column="title" var="title2" />
이렇게 조건을 걸고 (gte = greater than or equal to, lte = less than or equal to의 줄임말입니다. XE 시절부터 사용하던 more, less 연산자는 equal을 포함하는지 안 하는지 의미가 명확히 와닿지 않기 때문에 비추입니다. 만약 equal을 포함하지 않는 부등호가 필요하다면 gt, lt를 쓰면 됩니다.)
$args->title1 = '카';
$args->title2 = '킿';
이렇게 각각 따로 넘기면 될 것 같은데요?
<condition operation="between" column="title" var="title_prefixes" />
$args->title_prefixes = ['카', '킿'];
이렇게 할 수도 있는데, 한글 초성 검색이 between에서도 통하는지는 잘 모르겠습니다.
이런 종류의 쿼리가 DB를 터뜨리지 않고 빨리 실행될지도 의문이고요.