検索は、画面の一番上の並びにある検索ボックスから行います (デフォルトのテンプレートを使用している場合)。
検索は、デフォルトで AND 検索として処理されます。つまり、検索ボックスに入力したすべてのキーワードが検索に使用されます。また、キーワードの大文字小文字は区別されません。
以下に、DokuWiki のより高度な検索構文について説明します。すべての構文は組み合わせて利用できます。このセクションでは、角括弧 [ … ] は検索ボックスへの入力例を表すものとします。
キーワードのすぐ前に - を付加すると、そのキーワードを含むページを検索結果から除外することができます。例えば [ dokuwiki -plugin ] と検索すると、”dokuwiki” という単語は含むものの “plugin” という単語は含まないページが表示されます。
この除外構文 - はキーワードだけに限らず、後述する部分一致検索、フレーズ検索、名前空間の指定、グルーピングの構文でも利用することもできます。例えば、フレーズを除外したい場合は [ -"phrase you want to exclude" ] のように指定します。
キーワードの前後に * を付加すると、部分一致検索を行うことができます。例えば、[ wiki ] と検索すると “wiki” しか見つかりませんが、[ *wiki ] と検索すると “DokuWiki” も見つかるようになります (後方一致検索)。[ doku* ] (前方一致検索) や [ *okuwik* ] (部分一致検索) も可能です。
なお、* はワイルドカードではありません。キーワードの中で使用することはできず、[ doku*iki ] で検索しても何も見つかりません。
二重引用符でキーワードを囲むと、完全に一致するフレーズを検索することができます。例えば、[ "installing dokuwiki" ] のように検索します。
検索範囲を名前空間で限定することもできます。ある名前空間内に含まれるページから検索する場合は、@ もしくは ns: を名前空間名の前に置きます。ある名前空間に含まれるページを検索範囲から除外したい場合は、^ もしくは -ns: を名前空間名の前に置きます。
例えば、名前空間 “wiki:docs” を除く名前空間 “wiki” 内のページから “dokuwiki” を検索するには、[ dokuwiki @wiki ^wiki:docs ] と検索します。[ dokuwiki ns:wiki -ns:wiki:docs ] と検索しても全く同じ結果が得られます。
デフォルトでは AND 検索となりますが、検索ワードを | もしくは or で区切ると OR 検索となります。例えば、[ plugin | template ] と検索すると、”plugin” と “template” をどちらかでも含んでいるページが表示されます。[ plugin or template ] としても全く同じ結果が得られます。
OR 検索の優先順位は AND 検索に比べて低くなります。つまり、[ dokuwiki plugin | template ] と検索した場合は、以下に説明するグループ化構文で表現すると、[ dokuwiki (plugin | template) ] ではなく、[ (dokuwiki plugin) | template ] として解釈されます。
丸括弧 ( … ) で検索条件をグループ化することができます。括弧は高い優先順位を持っているため、OR 検索などの優先順位を強制する際に利用できます。
例えば、[ dokuwiki -(plugin | @plugin) ] と検索すると、”DokuWiki” という単語を含むページのうち、”plugin” という単語が含まれるページと名前空間 “plugin” 内のページを除いたページが表示されます。
検索ボックスの中にページ名の初めのほうを入力して、0.5 秒ほど待ってみてください。最近の Web ブラウザでは、入力内容にマッチしたページ名が自動的にポップアップ表示されるはずです。
OpenSearch は、Web サイトが持つ検索機能をあなたの Web ブラウザに簡単に統合するための標準技術です。最近のすべての Web ブラウザはこれをサポートしています。DokuWiki では OpenSearch が利用可能です。
以下に、あなたの Wiki の検索機能を Firefox に追加する方法を示します (他の Web ブラウザも恐らく同じような方法で処理します)。
規模の大きな Wiki であっても高速に検索できるよう、DokuWiki はインデックスを使用しています。何でも検索できるようにするには、インデックスが最新のデータで満たされている必要があります。ページの内容に関する情報は、ページがユーザから閲覧されたタイミングで追加され、更新されます。各ページには、必要に応じて (つまりページのタイムスタンプがインデックスファイルのタイムスタンプよりも新しかった場合は) インデックスの更新処理を行う2)不可視の画像 (Web バグ) が含まれています。
インデックスは、index ディレクトリにある page.idx、w[n].idx、i[n].idx というファイルから構成されます。w[n].idx ファイルには、Wiki ページに出現する長さが n の単語すべて (ストップワードを除く) が含まれます。w[n].idx ファイルの各行には、対応する行が対応する i[n].idx ファイルの中にあります。i[n].idx ファイルの各行は、pn*freq の形式でページの参照情報を含んでいます。ここで pn は page.idx ファイルの行番号、freq はそのページにおけるその単語の出現回数を表します。ページの参照情報が複数ある場合はコロンで区切られます。
インデクサは、言語ごとに用意されているストップワードファイルを使用します。ストップワードファイルには、非常によく出現するためインデックス化が不要な単語 (例えば英語での the など) のリストが含まれています。そのような単語を検索しても何もヒットしません。ストップワードファイルは DokuWiki の言語フォルダ、つまり <dokuwiki>/inc/lang/<language>/stopwords.txt に置かれていますので、適切なフォルダ内にあるファイルを編集することで、その言語でインデックス化されなくなる単語の追加と削除が可能です。
インデックスを持たない古いバージョンの DokuWiki からアップグレードした場合、インデックスが作成されるまでは検索が全くヒットしません。インデックスを作成するには、Wiki ページの閲覧によってインデックスが作成されるまで待つか、提供されているコマンドラインスクリプトを使用することができます。