====== 検索 ====== 検索は、一番上の行にある検索ボックスから行います(デフォルトの[[ja:template|テンプレート]]を使用している場合)。 ===== 構文 ===== 基本的に DokuWiki は論理 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 ]'' と検索しても全く同じ結果が得られます。 ==== OR 検索 (|) ==== デフォルトでは AND 検索となりますが、検索ワードを ''|'' もしくは ''or'' で区切ると OR 検索となります。例えば、''[ plugin | template ]'' と検索すると、"plugin" と "template" のどちらか又は両方含んでいるページが表示されます。 ''[ plugin or template ]'' としても全く同じ結果が得られます。 [[#部分一致検索 (*)]]の簡単な代替手段として OR 検索を利用できます。例えば ''​[ Frank | Fränk ]'' のようにスペルにばらつきがある人に関するページを探す場合です。 OR 検索の優先順位は AND 検索に比べて低くなります。 つまり、''[ dokuwiki plugin | template ]'' と検索した場合は、以下に説明するグループ化構文で表現すると、''[ dokuwiki (plugin | template) ]'' ではなく、''[ (dokuwiki plugin) | template ]'' として解釈されます。 代わりに、後述のグループ化構文を利用して下さい。 [[#名前空間の限定 (@)|名前空間で検索を制限]]したい場合、各検索を "​()" でグループ化する**必要があります**。 そうしないと ''​[ plugin | template @plugin]'' という検索は、 ''​[ (plugin) | (template @plugin)]'' のように動作します。 つまり、//全//名前空間に含まれる "​plugin" 又は "​template @plugin"​ という検索であり、 //plugin//名前空間に含まれる "​plugin" 又は "​template" という意図した検索ではありません。 ''​[ (plugin | template) @plugin]'' が後者の正しい表現です。 ==== 検索条件のグループ化 ==== 丸括弧 ''( ... )'' で検索条件をグループ化できます。 括弧は高い優先順位を持っているため、OR 検索などの優先順位を強制する際に利用できます。 例えば、''[ dokuwiki -(plugin | @plugin) ]'' と検索すると、"DokuWiki" という単語を含むページのうち、"plugin" という単語が含まれるページと名前空間 "plugin" 内のページを除いたページが表示されます。 ===== クイックサーチ ===== 検索ボックスの中に[[ja:pagename|ページ名]]の初めのほうを入力して、0.5 秒ほど待ってみてください。 最近の Web ブラウザでは、入力内容にマッチしたページ名が自動的にポップアップ表示されるはずです。 ===== OpenSearch ===== {{ :opensearch.png|Firefox の OpenSearch}} [[http://www.opensearch.org/|OpenSearch]] は、Web サイトが持つ検索機能をあなたの Web ブラウザに簡単に統合するための標準技術です。 最近のすべての Web ブラウザはこれをサポートしています。DokuWiki では OpenSearch が利用可能です。 以下に、あなたの Wiki の検索機能を Firefox に追加する方法を示します (他の Web ブラウザも恐らく同じような方法で処理します)。 - あなたの Wiki を Firefox で開きます。 - Firefox の検索バーの左側にある小さな矢印をクリックします。 - 「"DokuWiki" を追加」((もしあなたの Wiki のタイトルが変更されている場合、この選択肢はそれに合わせて変化します。))を選択します。 ===== 検索インデックスの基礎知識 ===== 規模の大きな Wiki であっても高速に検索できるよう、DokuWiki はインデックスを使用しています。 何でも検索できるようにするには、インデックスが最新のデータで満たされている必要があります。 ページの内容に関する情報は、ページがユーザから閲覧されたタイミングで追加され、更新されます。 各ページには、必要に応じて(つまりページのタイムスタンプがインデックスファイルのタイムスタンプよりも新しかった場合は)インデックスの更新処理を行う((注意: Web バグは他の処理にも使用されます。http://forum.dokuwiki.org/post/3116 を参照してください。))不可視の画像([[wpjp>Webバグ|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'' はそのページにおけるその単語の出現回数を表します。 ページの参照情報が複数ある場合はコロンで区切られます。 [[ja:indexer|インデックス処理]]は、言語ごとに用意されているストップワードファイルを使用します。 ストップワードファイルには、非常によく出現するためインデックス化が不要な単語(例えば英語での ''the'' など)のリストが含まれています。そのような単語を検索しても何もヒットしません。 ストップワードファイルは DokuWiki の言語フォルダ、つまり ''/inc/lang//stopwords.txt'' に置かれていますので、適切なフォルダ内にあるファイルを編集することで、その言語でインデックス化されなくなる単語の追加と削除が可能です。 インデックスを持たない古いバージョンの DokuWiki からアップグレードした場合、インデックスが作成されるまでは検索が全くヒットしません。 Wiki ページの閲覧によってインデックスが作成されるまで待つか、インデックスをアップデートするための同梱[[ja:cli#indexerphp|コマンドラインスクリプト]]を使用できます。