s4
changeset 301:ba0730073d6f
Add (1)article-ID search, (2)DATE search
author | HIROSE Yuuji <yuuji@gentei.org> |
---|---|
date | Thu, 13 Oct 2016 09:35:26 +0859 |
parents | 973fb0ea5c2f |
children | 9edf8e87e198 |
files | s4-blog.sh s4-funcs.sh |
diffstat | 2 files changed, 30 insertions(+), 11 deletions(-) [+] |
line diff
1.1 --- a/s4-blog.sh Tue Oct 11 23:34:51 2016 +0859 1.2 +++ b/s4-blog.sh Thu Oct 13 09:35:26 2016 +0859 1.3 @@ -441,13 +441,29 @@ 1.4 echo '</table>' 1.5 } 1.6 searchart() { 1.7 - kwd=`getpar kwd` 1.8 + kwd=`getpar kwd|nkf -wZ1` # Convert Zenkaku-SPC to ASCII-SPC 1.9 + kwdgrp="" 1.10 if [ -z "$kwd" ]; then 1.11 echo "検索語を指定してください" | html p; return 1.12 fi 1.13 - for k in `echo "$kwd" | sed "s/'/''/g"`; do 1.14 - kc=$kc${kc:+" AND "}"s.text LIKE '%$k%'" 1.15 - done 1.16 + if expr x"$kwd" : 'x#[1-9][0-9]*$' >/dev/null 1>&2; then 1.17 + # Like '#1234', assume as artID 1.18 + rowid=$((${kwd#\#} + 0)) # Force to be a number 1.19 + kc="a.rowid = $rowid" 1.20 + else 1.21 + for k in `echo "$kwd" | sed "s/'/''/g"`; do 1.22 + if expr x"$k" : 'x@[1-9][][0-9]*-[][0-9:-]*$' >/dev/null 1>&2; then 1.23 + # Like '@2016-10-10', expands to "s.ctime GLOB '@2016-10-10'" 1.24 + ctime=${k#@} 1.25 + # Not sure GROUP BY a.blogid is comfortable for searchers...? 1.26 + kc=$kc${kc:+" AND "}"s.ctime GLOB '${ctime}*'" 1.27 + ##### kwdgrp=" GROUP BY a.blogid" 1.28 + else 1.29 + kc=$kc${kc:+" AND "}"s.text LIKE '%$k%'" 1.30 + fi 1.31 + done 1.32 + fi 1.33 + echo kc=$kc 1.34 kwd=`echo "$kwd"|htmlescape` 1.35 owner=`getpar owner` 1.36 owner=${owner:-$1} 1.37 @@ -472,9 +488,9 @@ 1.38 substr(x.ctime, 0, 11) as DATE, 1.39 substr(x.text, 0, 78) as TEXT 1.40 FROM (SELECT blg.rid,blg.*,bs.val as title 1.41 - FROM readableblogs blg join blog_s bs 1.42 - ON blg.id=bs.id and bs.key='title') b 1.43 - join 1.44 + FROM readableblogs blg JOIN blog_s bs 1.45 + ON blg.id=bs.id AND bs.key='title') b 1.46 + JOIN 1.47 (SELECT a.id, 1.48 a.blogid, 1.49 s.ctime, 1.50 @@ -485,9 +501,9 @@ 1.51 max(CASE key WHEN 'ctime' THEN val END) ctime, 1.52 max(CASE key WHEN 'text' THEN val END) text 1.53 FROM article_s GROUP BY id) s 1.54 - ON a.id=s.id where $kc) 1.55 - x on b.id=x.blogid 1.56 - where b.id in (select id from blog_s $cond) 1.57 + ON a.id=s.id WHERE $kc$kwdgrp) 1.58 + x ON b.id=x.blogid 1.59 + WHERE b.id IN (SELECT id FROM blog_s $cond) 1.60 ORDER by x.ctime DESC;" 1.61 sedopt="s,<TR><TD>\([^<]*\)</TD>,<TR><TD><a\ 1.62 href=\"?replyblog+\1\">VIEW</a></TD>,"
2.1 --- a/s4-funcs.sh Tue Oct 11 23:34:51 2016 +0859 2.2 +++ b/s4-funcs.sh Thu Oct 13 09:35:26 2016 +0859 2.3 @@ -1459,10 +1459,13 @@ 2.4 } 2.5 2.6 search_form() { 2.7 + help="(1)空白区切りの単語で本文検索 2.8 +(2)#番号 で記事ID検索 2.9 +(3)@YYYY-MM-DD 日付け(シェルパターン可)で日付け検索" 2.10 cat<<-EOF 2.11 <div class="fr"> 2.12 <form action="$myname"> 2.13 - <input type="text" name="kwd" value="" 2.14 + <input type="text" name="kwd" value="" title="$help" 2.15 placeholder=" 全記事からの検索 " width="10"> 2.16 <input type="hidden" name="stage" value="searchart"> 2.17 </form>