generated at
📝検索処理のrefactoring (scrapbox-select-suggestion)

✅iteratorを函数を返す函数に変える
こっちのほうが使いやすい
ソースの更新と検索の双方をhooksから分離する
より疎結合にして、検索部分を書き換えられるようにする
アルゴリズムの変更
✅やりたいこと
Asearchの検索を1回だけにする
現状では、「空白をワイルドカード扱いするかどうか」「単語先頭と曖昧一致する候補を優先する」など、最大で4回もAsearchしている
空白一致とかいらんので消す
先頭一致は編集距離0のときのみ導入しようかと思っている
String.prototype.indexOf()でマッチした位置を特定できる
ビットパラレル手法によるアライメントアルゴリズムの方法を使えば、任意距離でマッチ位置を検出できるかも
Array.prototype.indexOf()で、完全一致の場合のみ一致箇所が早い順に並び替える
2022-11-06
19:12:13 merged
19:10:54 5000件ずつ検索するようにしても問題なさそう
空白区切りのテキストの並び替えの動作確認はもうやった
mergeしてreleaseしよう
15:57:00 Myersのbit-parallel法のJSに移植できたので、これをそのまま用いる
並び替えにも対応済み
2022-12-28 08:05:08 並び替えへの対応は不完全だが、仕様とする
不完全な点
語句がマッチした範囲を多めに見積もっている
AND検索で指定した語句同士が近すぎたり一部重複していたりするものは検索に引っかからない
全てのパターンを網羅できていない
最初に検索した語句の位置が、一番最初に出現した最短近似文字列に固定される
他の位置が考慮されていない
より正確に検索するなら、各検索語句がマッチした位置を全て保持し、最後にどの単語の出現位置も被らないような組み合わせを探すしかない
できたらおもしろいかも
ひらがなかたかな無視
全角半角無視
アクセント無視

#2022-12-28 08:10:35
#2022-11-06 15:57:51
#2022-11-03 18:21:24
#2022-10-27 08:37:39
#2022-10-21 20:14:24