存在しないページも候補に表示する
入力補完で存在しないページも候補に表示したい
設計案
- 今は、pagesの結果を流用しているが、存在しないページとなると・・
-- 元となるデータが無い
- search-cacheは何が入ってるんだっけ?
-- あるページに含まれるリンクを検索するときにファイルとして残している
-- 消してない?
--- 消してないならゴミが多そう
-- どうやって消すのが良い?
--- それで検索して結果が0件なら削除する?
---- 自身のページからもなくなった時が削除のトリガ
----- インクリメンタルにやるのは信頼性の問題もあり難しい?
--- あるページが編集された時、ページが解析され発見されたタグが検索対象となる
--- この時前回発見したタグから消えたものがあれば、これも検索対象に含める?
---- 検索の結果が0件の場合はsearch-cacheのファイルを消す?
----- 完全には消せないが、インクリメンタルに消せそう
----- 検索の結果が0件ということはどのページを開いてもそのキーワードで検索されることがないということ
------ 問題ない
- search-cacheが無いときはどうなる?
-- 今は無いときは検索してしまう
--- 結果をキャッシュに残すかをフラグで設定できる
-- これキャッシュが無いときはno hitを返しても問題ない?
--- cacheは無くても良い設計にしていたので、キャッシュが無いときはちゃんと検索してほしい
設計
- ページが変更されたときに、消えているタグを検索対象に追加する
-- この実装は完璧ではなくタグが世界から消えても残り続けてしまう問題がある
--- が、GCを別で実装することもできるので一旦これでよし
- ページ削除時も対応が必要という点を忘れそう
- searchして結果が0件の場合はsearch-cacheのファイルを作らない、あったら消す
-- すでにゴミのsearch-cacheが存在するが気になるようなら一度全部消してよい
--- キャッシュが無い場合は閲覧時に再生成される
---- しばらく全体が重くなるが・・
- search-cacheのファイル名一覧を作ればそれが求める候補リスト
- search-cacheに触れるたびにファイル名一覧を作り直す
実装
大体実装できたが汚い
正しく動いている?
妙なタグが保存されている気がする
タグが2つくっついたものがキーワードに入っていると、GCがうまく動かない(そもそもなんで入ったのか・・)
- 一度キャッシュを消しても良いかも?
TODO
2022-04-06. みなしごページ名がkeywordに含まれない、この時は1つしかなくとも青文字にしたい -- ページがあれば+2するという雑な対応でよさそう