다중검색 애드온을 사용하시는 분들이 아직 계시려나요?

이번에 1년만에 업데이트를 했습니다.

 

https://xetown.com/download/1006439

 

애드온 설정이 바뀐 것은 없습니다.

애드온 스킨도 바뀐 것은 없구요.

 

다만, 라이믹스의 애드온 트리거 기능 및 커스텀 쿼리 기능을 활용하여,

문서 목록화 쿼리를 누적적으로 실행하던 기능상의 단점을 일부 개선했습니다.

그래서 버전을 무려 0.5로 표기했습니다ㅎㅎ

즉, 문서 목록의 total_count 계산과 범위 검색의 최소값/최대값 계산을 제외하면,

문서 목록 쿼리를 단 1회로 경감했습니다 :)

더불어, 부가적으로 제공되던 서명 검색 기능도 이 팁을 이용한 뒤 문서 목록 쿼리로 통합시켜 속도를 줄이고자 했습니다 ;)

 

 


 

 

자료를 올리고 보니 한두 가지 개선사항이 보이긴 합니다.

(진정한 완성의 길은 참 멀군요)

 

1) 커스텀 쿼리를 서브 쿼리로 짰는데, 일반적으로는 테이블을 join하는 것이 성능상 더 좋다는 것 같더군요. 더 알아보고 개선 가능성이 있는지 체크해봐야겠습니다.

 

2) 범위 검색은 라이믹스의 확장변수가 문자열로만 저장된다는 점 때문에 까다로운 문제가 좀 있습니다. 간혹 개인적인 환경이나 목적 때문에 930~2200의 범위로 이뤄진 확장변수의 앞자리에 '0'을 붙여주고 싶을 때가 있잖아요? 그 경우까지 대비해서 통합적인 코드를 짜고 싶었는데 암튼 어려워서 그건 다음 기회로 미뤄두고,

 

일단은 해당 기능이 필요한 분들에 한해 아래와 같은 패치 코드를 제공하고자 합니다.

숫자 0을 붙이고 싶으시면 ap_extra_search.addon.php 파일의 341행 쯤에 하이라이트된 코드를 붙여넣기 하세요 :)

$_v = Context::get('extra_vars'.$key.'-2');
if ( $extra_keys[$key]->type !== 'date' && (strlen($extra_keys[$key]->min) !== strlen($extra_keys[$key]->max)) )
{
    $str_len = strlen($extra_keys[$key]->max);
    $v = sprintf('%0' . $str_len . 'd', $v);
    $_v = sprintf('%0' . $str_len . 'd', $_v);
}
$conditions .= ' (var_idx = ? AND value >= ? AND value <= ?)';

 

 

덧. 이전 버전을 사용하시던 분들이 계시다면 속도 비교 테스트도 부탁드려보겠습니다. 저는 문서 숫자가 적은 환경에서 개발을 하다보니 테스트에 한계가 있더라구요.

 

 


 

 

덧2 :

- 생각해보니 이번 버전부터 카테고리 중복 선택 기능이 지원됩니다.

- 예시 : https://dev.aporia.blog/?mid=board_fKje43&category_srls[]=17330&category_srls[]=13007&category_srls[]=12438&extra_vars8=%EC%84%B8%EB%AF%B8%EB%82%98%EC%8B%A4 여기를 보시면 팁, 에디터, 템플릿 등의 카테고리에 소속된 문서들이 목록화된 것을 보실 수 있을 겁니다.

- 단, 스킨으로 아직 구현은 못했어요. 까먹고 작업을 못했는데, 이것도 일인지라 어쩌면 무의식에서 배제를 했는지도 모르겠네요ㅋ

- 암튼 주소체계에 category_srls[]=17330&category_srls[]=13007&category_srls[]=12438 요렇게 된 부분이 들어가면 카테고리도 중복 취합이 가능하니 스킨 개발을 하신다든가 할 때 참고하셔도 좋겠습니다 :)

윤삼

profile
아무래도 중급 초반 수준의 코딩 오타쿠인 것 같습니다.
  • ?
    역시 윤삼님👍🏻 유료 자료같은 유지보수를 항상 보여주시네요ㅎㅎ
    + 작업 의뢰도 받으시나요?
  • ? profile

    당분간은 새 자료보다는 헌 자료 중심으로 느릿느릿 하려구요ㅎ
    작업 의뢰는 역량 부족으로 안 받고 있어요 :)

  • profile
    오우 안그래도 식물도감에 이용하고 있었는데 윤삼님은 능력은 어디까지입니까?
  • profile profile
    더 개선할 점이 눈에 보이는 만큼 더 분발해야죠! ㅎㅎ
  • profile profile
    https://4880.net/tree
    실제 활용하는 곳에 적용했습니다. ㅎㅎㅎ 감사합니다.
  • profile profile
    와 좋네요~
    만든 보람이 생깁니다ㅎㅎ
  • profile
    윤삼님 덕분에 번쩍이는 아이디어가 생각 났어요 감사합니다^^
  • profile profile
    우왓, 그게 뭘까요... 참 궁금합니다~? (대강 터키즈 톤ㅎㅎ)
  • profile
    https://jslocal.org/m41
    게시판 스킨을 모듈 단위로 다 뜯어고치지 않고서도 간단히 검색 기능을 강화시킬 수 있는 좋은 프로그램이라 저도 사이트 만들 때 애용합니다. 추천쾅쾅!
  • profile
    저도 개인적으로 라이믹스에서 사용자정의값 자체를 숫자로만 등록할 수 있게 하는 타입이 추가되면 좋겠다는 생각을 늘 했었는데요 ㅠㅠ
  • profile profile

    예시 사이트 감사합니다.
    저도 원래는 이런 아카이브 구축에서부터 시작한 거였거든요ㅎㅎ
    근데 이온디님이 하시니까 훨씬 멋있습니다ㅎㅎ

    숫자는 범위 검색을 통해 한다고 했는데,
    queries/getMaxAndMinValueWithinExtraVars.xml 이 파일을 보시면 문자열의 컬럼을 숫자열로 쿼리하는 부분이 있으니 다르게 개발하실 때 참고해보셔도 좋을 것 같습니다.

    참고로 이번 버전부터는 category=177뿐 아니라
    category_srl=175,176,177 같은 형식으로 복수의 카테고리를 멀티체크박스처럼 OR검색할 수도 있어요.
    https://jslocal.org/m41?category_srl=175,176,177
    필요하시다면 활용해보셔도 좋을 것 같아요.

  • profile
    안녕하세요~ 혹시 php : 7.0.0p1, Rhymix 2.0.22 에서는 작동을 안하는걸까요? 오류페이지가 뜨네요.
  • profile profile
    안녕하세요 :)
    링크한 원문에 써 있듯
    "0.5.0 버전부터는 라이믹스 2.0 및 php 7.4 이상에서만 작동합니다."
    그 이하의 버전에서는 테스트를 해보지 않아서 잘 모르겠습니다.
  • profile
    윤삼님 "진심으로" 항상 감사합니다. 해당 애드온을 너무 유용하게 잘 사용하고 있습니다.
    분류기능을 검색에 포함하여 사용 하는데 현재 1차 분류만 검색이 가능한데 2차분류까지 검색이 가능 하게 할려면 어떤 팁이 있을 지요? 예를 들어 서울(1차) < 강남 강북 등등등 (2차) 알려주시면 감사하겠습니다 ~
  • profile profile
    질문의 취지를 제가 잘 이해했는지 모르겠습니다.
    분류는 depth와 상관없이 각각의 category_srl을 가지는데요.
    이 값을 중심으로 쿼리를 보내고 목록을 가져오기 때문에 강남 분류에 해당하는 문서만 가져오지 않나요?