ホーム
プロフィール
製作物
前の記事
コメントの投稿について
次の記事
テンプレートによる多次元配列の表現
投稿日時:2019/11/15 14:34、最終更新日時:2019/11/15 14:34

記事の検索方法

タグ:
検索
  • pocket
  • はてなブックマーク

はじめに

 本ブログでは簡素な記事の検索をサポートしている。本記事ではその記事の検索方法についてを記述する。

ページ切り替え

 本ブログにおける記事の検索結果で一度に表示される数は10項目のみである。それ以上の検索結果を閲覧するには、検索結果の上下に表示されているページ切り替えボタンをクリックすることで可能となる。

タグ検索

 本ブログにおける記事は、その記事がどのような対象に関係あるのかを、それを示すタグが設けられている。タグ検索の入力ボックスに特定の文字列を入力することで、それを含むタグを検索することができる。
 例えば、

と記述すれば、”ブログ”のタグを含む記事を検索する。

AND検索

 タグとタグの間に空白文字を記述することでAND検索を行うことができる。
 例えば、

と記述すれば、”ブログ”と”プログラム”の両方のタグを含む記事を検索する。 

OR検索

 タグとタグの間に空白文字を記述しながら”OR”を入力することによりOR検索を行うことができる。
 例えば、

と記述すれば、”プログラム”と”C++”の両方のタグを含む記事か”ブログ”のタグを含む記事を検索する。
 また、AND検索とOR検索ではAND検索を優先して行うため、必要に応じて括弧を用いることとなる。

マイナス検索

 OR検索と同様にして、”-”を入力することによりマイナス検索を行うこなうことができる。
 例えば、

と記述をすれば、”プログラム”のタグを含む記事のうち、”C”と”Jaav”のタグを含まない記事を検索することができる。

完全一致

 文字列の前後にダブルクォーテーションを記述することで、その文字列を含むタグではなく、その文字列に一致するタグを含む記事を検索する。 例えば、

と記述すれば、”C”に一致するタグを含む記事を検索する。このとき、”C++”や”C#”といったタグについては除外される。

正規表現による検索

 正規表現を記述することによりタグ検索を行うことが可能である。これを実行するには、タグ検索の入力ボックスの横に存在するチェックボックスにチェックをいれる必要がある。
 ただし、これを利用するときは上記で示したようなAND検索等は利用不可である。

並び替え

 上記で示された検索による記事の絞り込みにより得られた記事を表示するとき、それらを適当な方法で並び替えることが可能である。
 そして、それは記事内の前後の記事に対してをも影響をする。

投稿日時(新しい順)

 この方法を選択することで記事の投稿日時の新しい順に表示をすることができる。

投稿日時(古い順)

 この方法を選択することで記事の投稿日時の古い順に表示をすることができる。

最終更新日時(新しい順)

 この方法を選択することで記事の最終更新日時の新しい順に表示をすることができる。

最終更新日時(古い順)

 この方法を選択することで記事の最終更新日時の古い順に表示をすることができる。

ランダム

 この方法を選択することで記事をランダムに表示することができる。このとき、ページ切り替え機能は意味を持たないため無効化されている。

マニアック

タグ検索の構文

 正規表現による検索を除くタグ検索をBNF記法により表現したものが以下である。

<expr> ::= <term> [ ('OR' | '-') <term> ]*
<term> ::= <fact> [ <fact> ]*
<fact> ::= '(' <expr> ')' | <tag>
<tag> ::= \w+

 実際、字句については

// 1文字以上の空白文字で区切る
$temp = preg_split('/\s+/u', $str);
// 単語で区切る
for ($i = 0; $i < count($temp); ++$i) $result = array_merge($result, preg_split('/\b/u', $temp[$i]));
// 長さ0の単語を除去
for ($i = 0, $n = count($result); $i < $n; ++$i) if (strlen($result[$i]) == 0) unset($result[$i]);

のように記述的には簡単(手抜き)に記述されており、これにより得られた配列を上で示したBNF記法に当てはめている。


前の記事
コメントの投稿について
次の記事
テンプレートによる多次元配列の表現

コメント欄(詳細な記述方法についてはこちら)

この記事ではコメントが禁止されています