generated at
✅external-completionの並び順を変える
Most linked順に並び替えるように変更する

現状
randomに並び替えている
serendipityを上げるのが目的
変更後
全てのprojectのlinkを混ぜて、Most linked順に並び替える
いろんなページから参照されているページ=重要なページと判断する
Most linked の値が等しいときは、辞書順に並び替える
ここはrandomでもいいかもしれない

既知の問題
遅延読み込みしたlinkがどうしても候補の後ろになってしまう
正しく反映するには、 Linked の値を保持しておく必要がある
done不完全ではあるが、計算workerに追加のlinkを渡したあとlinkedで並び替えをもう一度しておこう。
link数が膨大だとなかなか計算が終わらなくなる
具体的には、/suto3のlinked計算が終わらない
13万以上リンクが有る
done重複を除く処理を先にしていない。それをやろう。
08:59:28 13万から4万に減った。重複が多かったみたい
linkedの計算を並列処理すべきか?
Most Linked にしてしまうと、/marshmallow-rmのページが検索に上がってこなくなるのか……
Most Linkedで必ずしも有用な情報が上がってくるとは限らない……
曖昧度順&shuffleのほうがいいのかもしれない
1. link dataを取得
2. 全部shuffleしたあと、分割してworkerに渡す
3. worker側でタイトルの長さ順に並び替える

実装
WebWorker側のみ変更する
取得する値に、 linked を追加する
shuffle を削除、 linked に関してsortを実施する
てか shuffle 2回もやってたんかい
WebWorkerとそのnest先のWebWorkers
いらないから全部消そう
07:56:16 linkedの値を取得するために、APIを変える
てかこれなら、Most linked順にしてdataを取得できるのか。
clientで並び替えるより楽だな。そうしよう。
空リンクを取得できない
仕方ないので、自前でlinkedを計算するしかなさそうだ
こんな処理で行けるかな?
js
const json = {...} // /api/pages/${project}/search/titlesで取得したjson temps = json.flatMap(page => [...page.links, page.title].map(link => `/${project}/${link}`)); // tempsに全てのリンクを入れる linkRelations = [ {title: '...', links: ['...', ...],}, ...]; // 中身のあるページとそのリンク先ページの情報 // 並び替えをする const links = temps.map(title => { return { title: title, linked: linkRelations .filter(relation => relation.links.includes(title)) .length,};}) .sort((a,b) => b.linked - a.linked) .map(data => `/${project}/${data.title}`);
2020-11-26 07:51:09 実装開始
2020-11-26 08:20:58 実装終了。テストする
done08:35:30 バグとり終了。しばらくこれで使ってみる
08:56:50 重複処理を前倒しして余計な計算を減らす
#2020-11-26 07:43:07