リクエスト広場

ページ内検索

9 コメント
views
3 フォロー

現在検索フォームというものがあるが、対象がサイト内全てとなっている。
その対象をページ内だけに制限できるようにしてほしい。
(名前を検索するようなフォームをつくりたい)

SWEET
作成: 2022/01/23 (日) 13:32:52
通報 ...
1
01v 2022/01/24 (月) 01:54:16

ブラウザ側の機能の検索では不足でしょうか。PCだとCtrl+Fとかで検索できると思います。
また例えばwiki側にページ内検索機能があったとして、どのような検索結果をイメージしてるのでしょうか。サイト全体検索だとヒットするページが列記されるわけですが、ページ内だと該当行に飛んだり色が付いたり程度で、ブラウザの検索機能とたいして変わり映えがしないように思います。

2
名前なし 2022/01/24 (月) 22:30:39 a3b27@c2ee0 >> 1

横からですが、ブラウザの検索機能だと折畳みされている内容が検索から漏れるため、その点は不便ですね。
そういう時、自分は差分表示にしてソース文を検索していますが、見づらいですし一般の利用者に勧められるやり方とは言い難いかと思います。
まぁトピ主さんの目的からするとおそらく不足はないと思います。

3
SWEET 2022/01/30 (日) 15:06:33 970b4@7c7f8

あ、僕が欲しいのはページ内じゃなくて、特定の部分でした。(1ブロックとか)
既存のwikiwikiのサイト内検索だと、他のページでヒットしたものまで出てきてしまうので困ります。できれば、特定の部分だけ検索してほしいのですが、ブラウザ側の検索機能だと、関係ないところまで対象になったり、あるいは非表示になっているところを検索できなかったりと不便なところがあります。
それに、検索をかけるのは、僕ではなく、利用者なので、難しい操作はなしにしてほしいです。

4
koishiba 2022/01/30 (日) 23:21:53 0b3fb@021ad >> 3

利用者というのは閲覧者のことですか? それとも編集者のことでしょうか。
1ブロック単位での検索ツールにどのような意味・利便性があるのか、
ちょっと自分には想像できません。(特に閲覧者にとって)

ヒント」「以下の留意点~」に書かれているように、
(他のwikiでも需要がありそうか、なぜそれが必要か理由を書く)
どのような場合に、どんなふうに便利なのか、
簡単でいいので具体的な説明をお願いします。

5
SWEET 2022/02/02 (水) 09:22:08 970b4@7c7f8

koishibaさんありがとうございます。
利用者というのは閲覧者のことを指します。
今回僕が利用する目的は、wikiwikiに載っている膨大な量の一覧リストから特定のものだけを閲覧者が検索できるようにするためです。
サイト内検索だと、他のページにも同じようなものがあるのでわかりづらく、ブラウザ側の検索機能だと、他のブロックにも同じようなものもあるので、これも然り。
ただ、2ブロック、というパターンもあるので、accordionのプラグインと同様に範囲を設定できるようにしてほしいです。
他のwikiでも、特にゲーム攻略では、特定のものを検索するのがめんどくさい(別のところに飛んで行ったりする)ので、このプラグインも用意したほうがいいと思っています。
(contentsのプラグインがありますが、それでも多いので、もっとコンパクトにしたほうがいい。)

6
名前なし 2022/02/02 (水) 12:47:12 修正 a3b27@c2ee0

代替方法として次の2つを思いつきました。

  • 検索するブロックごとにaccordionにし、検索する際は「検索したくないところを閉じ、検索したいところのみを開いて」検索する(表示されていない箇所は検索できないことを逆用する)
  • 検索するブロックごとにpopout指定し、検索する際は検索したいブロックをポップアウトさせてそのページを検索する

やり方がスマートとは言えないので、指定した範囲のみの検索ができるに越したことはないと思います。

7
01v 2022/02/02 (水) 19:52:31 修正

現状でも後述のようなことができます。それぞれのリンク先に飛んで結果を確認してください。
ただし現在のwikiwikiでこれをプラグイン機能では実現できません。
つまり閲覧者が検索ボックスに任意の単語を入力して、かつ任意のページあるいは任意の区間を限定してという条件ではできません。
しかしwikiwikiのシステムに若干の手を加えてもらえればこれは可能になると思います。かつその改造がなされればこれ以外にもいつくかできることが増えると思われます。そんなに難しくないと思ってます。新しいプラグインは不要でInterWikiの連携を良くするだけです。

ページ内検索の件だけでは限定的な要望ですが、この対応ができれば併せて以下の問題も解決できる見通しになります。

  • 指定範囲内のfoldやaccordionを一括で開閉できるプラグインが欲しい
    少し前にあった要望。リンク
    どのように解決できるかは少し複雑なのでここでは説明しません。
  • ソース文を読み取り専用で開く機能
    >> 2の話にもありましたが、従来ソース文は編集ボタンを押すか差分ボタンから差分込みで表示するのが常でした。
    しかし前者は操作を誤るリスクがあり、また不要な差分情報が表示され見にくいという問題があります。
    どのように解決できるかは以下のページ内検索の例で示します。

結局何がどうなればいいのかは、話が細かくなるので私が直接wikiwikiさんに話を持っていきます。
今回の検索の件がなくても以前不便に思ったところでもあるので。

ページ内検索色々
以下特定のページを検索した結果の例を挙げます。実際にはこれをプラグインの検索ボックスの設置で実現させる必要があります。仮にそれができたときの結果のイメージです。これ以外の表示も色々できます。

  • 検索対象の元のページ
    実験的に以下のページを検索します。
    元ページのリンク

  • 上記ページの特定の文字だけ検索する
    さっきのページの全文章に対して"。"を検索させます。
    キーワードが"。"なのは他に適当にヒットするワードがなかったからです。
    accordionの中も含めて全部ハイライトされます。
    検索結果のリンク

  • キーワードを含む行だけ検索する
    ページ内から"。"を含む行だけ抽出します。ハイライトも付けます。(付けないことも可能。)
    accordionの行には"。"が無いので機能が取り除かれます。
    検索結果のリンク

  • 特定の区間だけ検索する
    検索区間を"使用例"の見出し内だけ絞り込みます。前述の検索よりさらに絞り込まれてます。
    検索結果のリンク
    区間の指定の仕方は色々できます。
    見出しは名称で指定したり、レベル別、先頭から何番目と何番目、どの見出しより後とか、色々できます。
    ただ閲覧者側に選択の自由はなく、設定者側が予め設定を決めておく必要があります。

  • ソース文を表示して検索
    ソースコードを読み取り専用で開いて、キーワードをハイライトします。
    検索結果のリンク

  • 特定の行だけ検索する
    例は書きませんがキーワードを含む表だけとか、リスト文だけとか、決まった表現を含む行だけに検索を絞り込めます。
    これは閲覧者が検索時に自由に設定できます。正規表現の理解が必要です。

  • foldやaccordionを開いた状態で表示と検索
    foldやaccordionを開いた状態でハイライト検索ができます。ただページの方にあらかじめ仕込みが必要です。なので上記Sampleページ(編集不可)ではできません。

8
名前なし 2022/02/03 (木) 00:04:09 051e9@9476d

以前、lookupプラグインとlsxプラグインを組み合わせているのを見たことがあります。
あまり詳しくないので誤り等あればどなたか補足お願いします。

1.「InterWikiName」ページに下記を記入
-[./?cmd=lsx&prefix=ページ名,include=(filter=$1) interwikiname] utf8

 ※「ページ名」は検索したいページの名前、「interwikiname」は任意の文字列
 ※「interwikiname」と「utf8」の手前にはスペースを入れる

2.検索フォームを置きたいページに下記を記入
#lookup(interwikiname,ボタン名,入力欄の初期値)

 ※「interwikiname」は1.で記入した任意の文字列
 ※「ボタン名」と「入力欄の初期値」はそれぞれ任意の文字列(省略可)

9
01v 2022/02/03 (木) 02:03:37 >> 8

それは>> 7で書いたのと同じです。
ですが結局現在のInterWikiNameはlookupからページ名を持ってこれないので実用的ではないのです。
なので>> 7で書いたようにInterWikiを改造する必要があるのです。