✅external-completionの並び順を変える
Most linked順に並び替えるように変更する
現状
randomに並び替えている
serendipityを上げるのが目的
変更後
全てのprojectのlinkを混ぜて、Most linked順に並び替える
いろんなページから参照されているページ=重要なページと判断する
Most linkedの値が等しいときは、辞書順に並び替える
ここはrandomでもいいかもしれない
既知の問題
遅延読み込みしたlinkがどうしても候補の後ろになってしまう
正しく反映するには、Linkedの値を保持しておく必要がある
/icons/done.icon不完全ではあるが、計算workerに追加のlinkを渡したあとlinkedで並び替えをもう一度しておこう。
link数が膨大だとなかなか計算が終わらなくなる
具体的には、/suto3のlinked計算が終わらない
13万以上リンクが有る
/icons/done.icon重複を除く処理を先にしていない。それをやろう。
08:59:28 13万から4万に減った。重複が多かったみたい
linkedの計算を並列処理すべきか?
Most Linkedにしてしまうと、/marshmallow-rmのページが検索に上がってこなくなるのか……
Most Linkedで必ずしも有用な情報が上がってくるとは限らない……
曖昧度順&shuffleのほうがいいのかもしれない
1. link dataを取得
2. 全部shuffleしたあと、分割してworkerに渡す
3. worker側でタイトルの長さ順に並び替える
✅external-completionの並び順をrandomにする
実装
WebWorker側のみ変更する
external-completion#5f8805f21280f000004d4bc2
取得する値に、linkedを追加する
javascriptでobject配列の重複を除去する方法を用いる
shuffleを削除、linkedに関してsortを実施する
てかshuffle2回もやってたんかい
WebWorkerとそのnest先のWebWorkers
いらないから全部消そう
07:56:16 linkedの値を取得するために、APIを変える
/scrapboxlab/APIの書式#5f40c1a71280f000001a3bdbにする
てかこれなら、Most linked順にしてdataを取得できるのか。
clientで並び替えるより楽だな。そうしよう。
空リンクを取得できない
仕方ないので、自前でlinkedを計算するしかなさそうだ
こんな処理で行けるかな?
code: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 実装終了。テストする
/icons/done.icon08:35:30 バグとり終了。しばらくこれで使ってみる
08:56:50 重複処理を前倒しして余計な計算を減らす
#2020-11-26 07:43:07