ID collision: a node with no source_file beats a sourced node with the same id (dedup._collision_rank)
Maintainer thường phản hồi trong vòng 1 ngày
Chưa có ai nhận issue này.
- #4496 của @ayushcodes10 — đã đóng, không merge
Đánh giá
- Độ khó
- 2/5
- Thời gian dự kiến
- 1-3 giờ
- Mức phù hợp với người mới
- 70/100
Hướng nghiên cứu
Cách xếp hạng xung đột nằm ở _collision_rank trong graphify/dedup.py, và deduplicate_entities gọi hàm này. Hãy bắt đầu bằng cách chạy lại bước tái hiện trong issue với sourced và blank theo cả hai thứ tự đến, sau đó so sánh với cách _pick_winner đã ưu tiên một source_file thật. Công việc hoàn thành khi nút có nguồn vẫn tồn tại ở cả hai thứ tự và hai nút có nguồn cùng id vẫn được giải quyết như trước. PR liên kết #4496 đã bị đóng mà không được merge, vì vậy hãy xem thảo luận của PR đó trước.
Do mô hình lập chỉ mục viết ra từ nội dung của issue.
Mô tả
Version: graphifyy 0.9.91 (unchanged since at least 0.9.49)
When two nodes share an id that neither node's file encodes, so that _defines_id is False for both, _collision_rank ties them on every key but the reversed path. An empty source_file gives (), which sorts before any real path. So the source-less node always survives, and the sourced one is dropped:
from graphify.dedup import deduplicate_entities, _collision_rank
sourced = {"id": "x", "label": "X", "source_file": "a.md"}
blank = {"id": "x", "label": "X"}
print(_collision_rank(sourced)) # (True, 1, 1, 'X', ('a.md',))
print(_collision_rank(blank)) # (True, 1, 1, 'X', ())
nodes, _ = deduplicate_entities([sourced, blank], [], communities={})
print(nodes) # [{'id': 'x', 'label': 'X'}]
It is the same in either arrival order, and graphify warns "keeping 'X' from '', dropping 'X' from 'a.md'". Source-less semantic nodes reach dedup because the out-of-scope filter (#1895) returns early on an empty source_file, and since such a node is never in the per-file semantic cache, every incremental merge carries it forward.
#3775/#3786 made "a real source_file beats none" the rule in _pick_winner. The exact-ID path does not have it (its reversed-path tie-break dates from #2532's fix in 0.9.36). A key such as not node.get("source_file") right after not _defines_id(node) would match. It changes no collision between two sourced nodes.
- Ngôn ngữ chính
- Python
- Star
- 124k
- Fork
- 11.9k
- Chỉ số merge pull request
- Không có pull request nào được merge trong 30 ngày
Chuẩn bị môi trường
Dự án này không cung cấp dev container, Dockerfile hay hướng dẫn đóng góp, nên bạn cần tự thiết lập môi trường: hãy bắt đầu từ README và xem hướng dẫn đóng góp lần đầu của chúng tôi để biết các bước chung.
Bắt đầu từ đâu
- Đọc hết issue, rồi đọc hướng dẫn đóng góp của dự án.
- Bình luận trên issue rằng bạn sẽ nhận — tránh hai người làm cùng một việc.
- Fork repository và làm thay đổi trên một nhánh.
- Mở pull request có tham chiếu số hiệu của issue.
Issue khác của Graphify-Labs/graphify
-
Cache the claude backend system prompt via Anthropic prompt cachingCó thể đã có người làm @Jvxoq đã nhận hôm nay. Đang mở
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 76/100
Graphify-Labs/graphify#4835 · 2 bình luận ·
Maintainer thường phản hồi trong vòng 1 ngày
-
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 76/100
Graphify-Labs/graphify#4831 · 2 bình luận ·
Maintainer thường phản hồi trong vòng 1 ngày
-
Độ khó 1/5 1-3 giờ Mức phù hợp với người mới 75/100
Graphify-Labs/graphify#4829 · 1 bình luận ·
Maintainer thường phản hồi trong vòng 1 ngày
-
hooks: last-resort `python3` probe launches the Microsoft Store redirector on Windows (visible console flash, exit 9009)Có thể đã có người làm @Deepjyoti-Sarmah đã nhận 9 ngày trước. Đang mở
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 76/100
Graphify-Labs/graphify#4563 · 2 bình luận ·
Maintainer thường phản hồi trong vòng 1 ngày
-
GRAPHIFY_DISABLE_THINKING is ignored by the claude backend, so thinking eats max_tokens and extraction truncatesCó thể đã có người làm @bercedev đã nhận 10 ngày trước. Đang mở
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 69/100
Graphify-Labs/graphify#4546 · 1 bình luận ·
Maintainer thường phản hồi trong vòng 1 ngày
Tất cả issue của Graphify-Labs/graphify
Issue tương tự
-
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 65/100
Maintainer thường phản hồi trong vòng 1 ngày
-
[oblt-aw][autodoc] Document obs-aw-automerge contract and fix automerge doc inconsistenciesCó thể đã có người làm @github-actions đã nhận hôm nay. Đang mở
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 76/100
Maintainer thường phản hồi trong vòng 1 ngày
-
admission-deferred priority: medium status: ready work-class: scoped
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 70/100
melodic-software/claude-code-plugins#10887 · 4 bình luận ·
Maintainer thường phản hồi trong vòng 1 ngày
-
backend bug good first issue
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 70/100
PoCInnovation/Distribox#255 ·
Maintainer thường phản hồi trong vòng 1 ngày
-
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 72/100
google/langextract#598 ·
Maintainer thường phản hồi trong vòng 1 ngày