✅external-completionの並び順を変える
現状
randomに並び替えている
変更後
いろんなページから参照されているページ=重要なページと判断する
Most linked
の値が等しいときは、辞書順に並び替える
ここはrandomでもいいかもしれない
既知の問題
遅延読み込みしたlinkがどうしても候補の後ろになってしまう
正しく反映するには、 Linked
の値を保持しておく必要がある
不完全ではあるが、計算workerに追加のlinkを渡したあとlinkedで並び替えをもう一度しておこう。
link数が膨大だとなかなか計算が終わらなくなる
13万以上リンクが有る
重複を除く処理を先にしていない。それをやろう。
08:59:28 13万から4万に減った。重複が多かったみたい
linkedの計算を並列処理すべきか?
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を計算するしかなさそうだ
こんな処理で行けるかな?
jsconst 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 実装終了。テストする
08:35:30 バグとり終了。しばらくこれで使ってみる
08:56:50 重複処理を前倒しして余計な計算を減らす