search: FTS special characters are deleted, not separated, so leaf(entry) matches nothing
メンテナーはふだん 1 日以内に返信
評価
- 難易度
- 1/5
- 見積もり時間
- 1時間未満
- 初心者へのやさしさ
- 88/100
- issue の種類
- バグ
- 明瞭さ
- 明確に書かれている
- 活発さ
- 活発
- 技術スタック
- typescript
- 領域
- search
調査の方向性
src/db/queries.ts の 2036 行目付近から始めてください。そこでは FTS5 の特殊文字を処理する replace が検索語を組み立てています。まずサンプルファイルに対して codegraph query "leaf(entry)" を実行し、結果が空であることを再現してください。置換先をスペースに変更し、両側がそれぞれ引用符で囲まれた別々の語になるようにしてから、leaf(entry)、leaf^entry、leaf()、そして単純な leaf entry のクエリを再実行し、回帰がないことを確認してください。関数呼び出しのクエリが名前付きシンボルを返し、既存の検索テストが引き続き通れば完了です。
索引モデルが issue の本文から書いたものです。
説明
Full-text search deletes FTS5 special characters instead of turning them into separators, so identifiers on either side of a (, ), ^, :, ", ' or * merge into one token that matches nothing.
// a.ts
export function entry() { mid1(); mid2(); }
export function leaf() { return 1; }
| query | result on main |
|---|---|
codegraph query "leaf entry" |
entry, leaf ✓ |
codegraph query "leaf(entry)" |
No results found |
codegraph query "leaf()" |
leaf ✓ (nothing follows the paren) |
The same happens through the library (searchNodes('leaf(entry)'), 'leaf^entry', 'leaf"entry' all return []). The LIKE and fuzzy fallbacks don't recover it.
Cause. db/queries.ts#L2036: .replace(/['"*():^]/g, '') // Remove FTS5 special chars turns leaf(entry) into the single term "leafentry"*.
Reproduced on main at 7973df0d with CODEGRAPH_KERNEL=0. Linux/WSL2, Node 22.23.2.
Why it matters. Agents and people paste call expressions and signatures into search (render(props), getUser(id), Foo::bar(x)), and those come back empty instead of finding the named symbols.
Fix. Replace with a space instead of the empty string (.replace(/['"*():^]/g, ' ')). Each side then becomes its own quoted term.
- 主要言語
- C
- スター
- 73.2k
- フォーク
- 4.7k
- 平均マージ
- 3時間 15分
- マージ済み PR(30日)
- 576
環境構築
このプロジェクトには開発コンテナ、Dockerfile、コントリビューションガイドがありません。まず README を読み、一般的な手順ははじめてのコントリビューションガイドを参照してください。
はじめの一歩
- issue を最後まで読み、次にプロジェクトのコントリビューションガイドを読みます。
- 着手することを issue にコメントします — 二人が同じ作業をするのを防げます。
- リポジトリをフォークし、ブランチを切って変更します。
- issue 番号を参照したプルリクエストを送ります。
colbymchenry/codegraph のほかの issue
-
mcp: a projectPath naming a file inside a project returns isError ("Path is not a directory")対応中かも @maxmilian が 1 日前に担当しました。 オープン
難易度 2/5 1〜3時間 初心者へのやさしさ 76/100
colbymchenry/codegraph#2982 ·
メンテナーはふだん 1 日以内に返信
-
mcp: a non-object tools/call arguments crashes the handler and is reported as an internal error to retry対応中かも @kjgggggg が 1 日前に担当しました。 オープン
難易度 2/5 1〜3時間 初心者へのやさしさ 82/100
colbymchenry/codegraph#2981 ·
メンテナーはふだん 1 日以内に返信
-
難易度 2/5 1〜3時間 初心者へのやさしさ 72/100
colbymchenry/codegraph#2974 ·
メンテナーはふだん 1 日以内に返信
-
難易度 2/5 1〜3時間 初心者へのやさしさ 66/100
colbymchenry/codegraph#2959 · コメント 1 件 ·
メンテナーはふだん 1 日以内に返信
-
TypeScript: an import resolves to a same-named method of an exported object literal instead of the exported function対応中かも @inth3shadows が 1 日前に担当しました。 オープン
難易度 2/5 1〜3時間 初心者へのやさしさ 75/100
colbymchenry/codegraph#2945 ·
メンテナーはふだん 1 日以内に返信
colbymchenry/codegraph の issue をすべて見る
似ている issue
-
Type: Bug
難易度 2/5 1〜3時間 初心者へのやさしさ 76/100
apache/nuttx-apps#3942 ·
メンテナーはふだん 1 日以内に返信
-
Add missing unit tests for IsAdmissionPolicyName and IsCertManagerResourceName対応中かも @a1h8 が今日担当しました。 オープン
難易度 2/5 1〜3時間 初心者へのやさしさ 82/100
kubernetes-sigs/security-profiles-operator#3644 ·
メンテナーはふだん 1 日以内に返信
-
難易度 1/5 1時間未満 初心者へのやさしさ 70/100
ly05010419/MacNativeGames#1340 ·
メンテナーはふだん 1 日以内に返信
-
難易度 2/5 1〜3時間 初心者へのやさしさ 72/100
メンテナーはふだん 1 日以内に返信
-
bug
難易度 2/5 1〜3時間 初心者へのやさしさ 84/100
メンテナーはふだん 1 日以内に返信