Scrapboxの候補で並ぶ順番が適切でない
例えば、Reactと入力したとき、「React」というタイトルのページが一番上に出ない
以前までは出ていた
どれくらいだろう、自分は結構前からこういう仕様だったmtane0412.icon
前からそうだったのか。2023/1/6に気付いたmrsekut.icon
https://gyazo.com/37b81cfc2f213c08991c270d303d7326
↑2023/1/6時点
シークレットウィンドウで確認しても再現した
「React」以外の他の単語でも再現する
e.g. 「MySQL」
React、今見たら2番めになっていた
https://gyazo.com/a167ecf1afeac563c67488a47484c7fa
↑2023/1/7時点
マッチする優先順位が変わった?おま環?mrsekut.icon assets-20230105-125847のassets/index.jsにて、QuickSearchはvar i = v.default.QuickSearch.search(de).slice(0, 100).map((t=>t.title))でincremental searchしている v.default.QuickSearch.searchは、検索語句deが2文字以下か検索結果が11件以上のとき正規表現で絞り込みをかける
例:Reactで検索すると、/(r\s*e\s*a\s*c\s*t)/iで絞り込みがかかる
並び順が確かに気になる
正規表現検索では、this.pages.filter((t=>s.test(t.title))).sort(((t,i)=>t.titleLengthForSort - i.titleLengthForSort))で絞り込みと並び替えを行っている
s:正規表現、Reactで検索した場合は/(r\s*e\s*a\s*c\s*t)/i
.sort(((t,i)=>t.titleLengthForSort - i.titleLengthForSort))しているなら、短いタイトル順に並ぶはずだが……
https://gyazo.com/28961af754689e59751c6610fffd6b0d
code:dedicated-worker.js
function getLengthForSort(t) {
}
これバグじゃん!!!takker.icon
❌/[#-_/.,\s()<>{}()]+[a-z]?$/i
✅/[#\-_/.,\s()<>{}()]+[a-z]?$/i
逆?wogikaze.icon
逆でした(❌と✅)。ご指摘ありがとうございますtakker.icon
-がescapeされていないため、[#-/]+(ほぼすべてのalphabetの列)が_一文字に集約されてしまう
このため、半角英数字と半角記号と空白で構成された任意の長さのリンクが_一文字になってしまい、文字列長比較が無意味になっている
上のスクショ中のリンクの並び順がむちゃくちゃなのはそのせい
Reactもreact.jsもscrapbox.io/study-reactも全部長さが同じ!世界は狂ってしまったtakker.icon
草wogikaze.icon
[a-z]?$もおかしいtakker.icon
これのせいで、末尾が全角文字なだけで通常の文字列長が採用されていしまい、検索結果の末尾に追いやられてしまった
https://gyazo.com/6467c1eae5da3c4220aa7fb3329207b0
というか全体的に何がしたい函数なのかわからないtakker.icon
「数字の羅列、記号の羅列を一文字とみなして測った文字列長」を求めたかったとは予測できる
[a-z]?は.aや#.aを2文字ではなく1文字としてカウントしたかったから付けた?
wogikaze.icon確かに意図が不明
code:js
// React.a => React_
takker.iconの予測をコードに落とし込むとこんなかんじtakker.icon
code:assumption(js)
function getLengthForSort(t) {
}
報告してもらってたのか、ありがとうございます!!mrsekut.icon