Quantcast
Channel: Jazzと読書の日々
Viewing all articles
Browse latest Browse all 480

Obsidian:Roomで全文検索を始めよう

$
0
0

まいど同じネタです。

Room

ObsidianにScrapbox(Cosence)のメニューをつけてみる。 そういう狙いのDataviewスクリプトです。

前回queryファイルを使わないので取り外したのですが、すると少し味気ない。 そもそも「Obsidianをローカルなインターネットに見立ててみよう」の意図だったので、全文検索できないのも不便です。

ということで、検索を見直しました。

使い方

リーディングビューで見るとファイル履歴がカード形式で表示されます。

タップすればそのファイルが開く仕組み。 検索欄にキーワードを打ち込むとファイル名で絞り込みをします。

今回の変更点は、検索欄にキーワードを書いてから「+」を押したとき。 これを全文検索にしました。 コアプラグインの検索にキーワードを引き継ぎます。

検索欄が空欄のときは新規ファイル作成になります。

Room.md

スクリプトは下記のようになります。

Import Obsidian: Room

>[!note]- Room
>```dataview>task where !completed group by file.link>``````dataviewjsconst s = "background:ivory;width:119px;height:112px;border:1px solid #eee;border-top:10px solid gold;text-decoration:none;padding:3px;border-radius:5px;margin:3px;overflow:hidden;float:left;"const ss = "border-top:10px solid orange;"const p = dv.el("input")p.placeholder = "..."p.style = "background:whitesmoke;font-size:large;width:50%;border-radius:5px;border:1px silver solid;"const btn = dv.el("button","+")btn.style = "background:none;font-size:small;margin:5px;width:20px;"const b = dv.el("div", "")b.style = "font-size:small;height:4000px;"disp()p.onkeyup = () => disp()btn.onclick = () => {  q = encodeURIComponent(p.value)  if(q){    open(`obsidian://search?query=${q}`)}else{open("obsidian://new")}}functiondisp(){
  r =newRegExp(`${p.value}`,"i")const c = dv.pages('').file
    .filter(x => x.starred).filter(x => r.test(x.name)).sort(x => x.mtime,"desc").map(x =>`<a class=internal-link style='${s}${ss}' href='${x.path}'>${x.name}</a>`)const d = dv.array(Object.entries(dv.app.metadataCache.fileCache)).filter(([x,y])=> r.test(x)).sort(([x,y])=> y.mtime,"desc").limit(200).map(([x,y])=>`<a class=internal-link style='${s}' href='${x}'>${x.split("/").pop().replace(/.md$/,"")}</a>`)
  b.innerHTML = c.join("")+ d.join("")}```

AND検索の定位性

全文検索についてですが、普通に多いのは「二つのキーワードをともに含むファイル」という探し方ですね。 AND検索。 これをよく使う。

ある言葉とある言葉の交差点。 記憶はそんな構造をしているのかもしれません。 補助線が一つだけでは特定しにくい。 該当するファイルが列挙されてパニックになります。

二つ補助線を引くとき、焦点が定まる。 目が二つあるのも、耳が二つあるのも、似た理由なのでしょう。 位置の特定には二つの補助線が必要になる。

説明がうまい文章を見ると、そこにも二つの視点があって、同じことを別のメタファーで表現する工夫がされています。 二つのメタファーが軽く使われている。 すると、その事象を定位しやすい。

物事を考えるとき二項対立が使われるのも、思考が2つの視点を必要とするからでしょう。 決して「対立」ではない。 補助線が2つあって「何か」を考えることができる。

その「何か」がサブジェクト(主題)であり、使われる補助線はオブジェクト(対象)なのだろうなあ。 オブジェクトだけ見ていてもサブジェクトは読み取れない。

まとめ

Obsidianをバージョンアップしてから、テキスト横幅が増えてしまった。 たぶんStyle関係のプラグインとバッティングしたんだろうなあ。 アンインストールしても状況は変わらず。

使う分には困らないので、このまま使用を続けています。


Viewing all articles
Browse latest Browse all 480

Trending Articles