Open samunohito opened 5 days ago
このPRによるapi.jsonの差分 差分はありません。 Get diff files from Workflow Page
Attention: Patch coverage is 28.19149%
with 135 lines
in your changes missing coverage. Please review.
Project coverage is 39.97%. Comparing base (
a3d236c
) to head (d6df98b
). Report is 449 commits behind head on develop.
Files with missing lines | Patch % | Lines |
---|---|---|
packages/backend/src/core/SearchService.ts | 23.83% | 131 Missing :warning: |
packages/backend/src/GlobalModule.ts | 42.85% | 4 Missing :warning: |
:umbrella: View full report in Codecov by Sentry.
:loudspeaker: Have feedback on the report? Share it here.
🚨 Try these New Features:
芸細な話でいうと、
query.andWhere('note.text ILIKE :q', { q: `%${sqlLikeEscape(q)}%` });
ここを note.cw + note.text みたいにして cwも検索対象に含める(インデックスは cwとtextを結合したものをあらかじめ作っておく)と個人的により神です
ここを note.cw + note.text みたいにして cwも検索対象に含める(インデックスは cwとtextを結合したものをあらかじめ作っておく)と個人的により神です
related: https://github.com/misskey-dev/misskey/issues/14373
explain analyse select * from note where "userId" = 'id' and text &@ 'text';
を
explain analyse select * from note where "userId" = 'id' and (array[text, cw] &@ 'text');
とすることでcwを含めた検索も可能となりますが、挙動が明確に変わるので別対応とします。
また、上記クエリに対応させるとindexの作成方法も変わってきます…
CREATE INDEX idx_note_text_and_cw_combined_with_pgroonga ON note USING pgroonga ((array[text, cw]));
実際導入してみてnitsな指摘ですが、コンパネから現在の検索プロバイダをどのモードとして認識しているか確認できると嬉しいかもと思いました (configしたつもりで認識されてないわーとか起きそうだなと) まあ熟練のサーバー管理人ならそんな失敗しないかもしれませんけど! (私はconfigだけいじってコードの適用を忘れていましたの札)
いいアイデアだと思います。 …が、実現するにはconfigの値をフロントエンドまで伝搬させる必要があり、現実的ではなさそうです。
代わりに、プロバイダの名称をサーバ起動時にログ出力するようにしたのですが、多少は改善されるでしょうか…
十分だと思います!ありがとうございます
※2024.11.0の差分もそこそこたまってきているのでこれより後のリリースにしたい
What
&@
)でノート検索が出来るようになりますfulltextSearch.provider
にmeilisearch
を明示する必要があります(明示しない場合、SQLのLIKE検索が使用されます) meilisearchを利用していないのであれば特に変更はありません。Why
fix #14730
Additional info (optional)
note.textにpgroongaのindexを作成し、実行計画が改善されることを確認(自鯖/214327レコード程度) before after
自分のサーバにpgroongaとこのprの内容を先行導入し、実際に動作確認
下記理由からpgroongaのindexを付与するマイグレーションsqlを作成していません
導入する場合、下記のようなSQLを手動実行してindexを作成いただく必要があります。
Checklist