Skip to content

קישורים: חיפוש בתוכן דרך מונה המפרשים, בלי השוואת מחרוזת ידנית - #1170

Open
yakov100 wants to merge 2 commits into
Otzaria:devfrom
yakov100:fix/1114-links-content-search-nikud
Open

קישורים: חיפוש בתוכן דרך מונה המפרשים, בלי השוואת מחרוזת ידנית#1170
yakov100 wants to merge 2 commits into
Otzaria:devfrom
yakov100:fix/1114-links-content-search-nikud

Conversation

@yakov100

@yakov100 yakov100 commented Sep 4, 2026

Copy link
Copy Markdown

מה השינוי?

חיפוש בתוכן הקישורים החמיץ כל תוכן מנוקד — פסוקים, משניות, ציטוטים. מקלידים אלהים, בתוכן כתוב אֱלֹהִים, והתשובה היא "לא נמצאו קישורים התואמים לחיפוש". בטקסט לא מנוקד (גמרא, ראשונים, הלכה) החיפוש עבד, ולכן הבאג לא בלט.

השורש: _filterLinksAsync השוותה cleanContent.contains(query) על הטקסט הגולמי, כש-normalizeSelectedLinkText רק מכווצת רווחים. זה היה המסלול היחיד באפליקציה שלא הסיר ניקוד לפני התאמה — 20 קבצים אחרים קוראים ל-removeVolwels, כולל חיפוש בתוך ספר, חיפוש ב-PDF וחיפוש בתוכן המפרשים.

באותו רכיב עצמו ההדגשה כבר עברה דרך המנוע, כך שקישור שכן נמצא הודגש נכון — רק הסינון פסל אותו קודם.

התיקון: החלפת ההשוואה הידנית בקריאה ל-countCommentarySearchMatches, אותה פונקציה שחיפוש המפרשים כבר משתמש בה היום על אותם אובייקטי Link. עם זה נפתרים גם פיסוק, מעברי שורה וגמישות ההתאמה, שנבעו מאותו שורש.

partialWordHighlight סונכרן עם partialWordMatch של הסינון, אחרת קישור נכנס לרשימה בלי שההתאמה שהכניסה אותו מודגשת בו (הלקח מ-issue #1055).

normalizeSelectedLinkText נמחקה — הסינון היה השימוש היחיד בה. נטו פחות קוד בקבצי המקור: ‎+31/−46.

בדיקות: טסט חדש links_content_search_nikud_test.dart עם שני מקרים שנבדלים בניקוד בלבד. לפני התיקון הבקרה עברה והמנוקד נכשל; אחרי — שניהם עוברים. בנוסף הורצו test/text_book/, test/pdf_book/, test/widgets/ — 2,243 טסטים עוברים.

הערה למתחזקים: לא ידוע אם הניקוד הוא מה שהמדווח ב-#1114 נתקל בו — הוא כתב רק "טקסט שודאי מופיע". הפגם עצמו הוכח ותוקן; אם הבעיה שלו נמשכת, כדאי לשאול אותו איזה טקסט ובאיזה ספר חיפש.

קישור לבעיה

Fixes #1114

הצהרות התורם

  • אני מאשר שה-PR שלי עומד בתנאי התרומה המפורטים ב-README
  • פיצ'ר חדש? — התייעצתי לפני כן (בפורום או ב-issue)
  • שינוי UI? — צירפתי צילומי מסך לפני/אחרי בסוף התיאור
  • הרצתי flutter analyze על הקוד ואין שגיאות

צילומי מסך

אין שינוי חזותי — הפריסה, הצבעים והרכיבים זהים. השינוי הוא בלוגיקת ההתאמה בלבד: אותו חיפוש שהחזיר "לא נמצאו קישורים" מחזיר עכשיו את הקישורים שבתוכנם המילה מופיעה. ההבדל מודגם ב-links_content_search_nikud_test.dart, שם שני המקרים נבדלים בניקוד בלבד.

🤖 Generated with Claude Code

…tzaria#1114)

הסינון השווה contains על הטקסט הגולמי, ולכן החמיץ כל תוכן מנוקד — המסלול
היחיד באפליקציה שלא הסיר ניקוד לפני התאמה. ההדגשה באותו רכיב כבר עברה
במנוע, כך שקישור שכן נמצא הודגש נכון; רק הסינון פסל אותו קודם.

partialWordHighlight מסונכרן עם partialWordMatch של הסינון, אחרת קישור
נכנס לרשימה בלי שההתאמה שהכניסה אותו מודגשת בו (הלקח מ-issue Otzaria#1055).

normalizeSelectedLinkText נמחקת — הסינון היה השימוש היחיד בה.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: e42262c9b8

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment on lines +696 to +697
final matches = countCommentarySearchMatches(
content: content,

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Badge נרמל את ה־HTML לפני ספירת ההתאמות

כאשר תוכן קישור מכיל ישות HTML בין מילים, למשל ודר&nbsp;שאל, חיפוש הביטוי הגלוי ודר שאל מפסיק למצוא אותו: כעת מועבר למונה התוכן הגולמי, ואילו countCommentarySearchMatches מסיר רק ניקוד ופיסוק ואינו מפענח ישויות או מסיר תגיות. המסלול הקודם הפעיל stripHtmlIfNeeded והמיר &nbsp; לרווח, ואף הייתה לכך בדיקה ייעודית שנמחקה בשינוי; יש לנרמל את התוכן לפני הקריאה למונה כדי לא לאבד חיפושים בתוכן HTML.

Useful? React with 👍 / 👎.

Copy link
Copy Markdown
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

תודה — בדקתי את שני המקרים בטסט, ואחד מהם אכן נשבר.

&nbsp; בין מילים — צדקת. countCommentarySearchMatches מסיר ניקוד ופיסוק בלבד, ותוכן ודר&nbsp;שאל הפסיק להיענות לשאילתה ודר שאל. רגרסיה אמיתית מול המסלול הקודם.

תגית inline — לא נשבר. אמר <b>רבי</b> יוסי מול השאילתה אמר רבי נמצא גם בלי הסרת תגיות.

תוקן ב-3a41d85: stripHtmlIfNeeded לפני הקריאה למונה — הוא גם מפענח ישויות וגם מסיר תגיות. נוספו שני טסטים שמכסים את שני המקרים; הראשון היה אדום לפני התיקון. 660 טסטים באזור עוברים.

`countCommentarySearchMatches` מסיר ניקוד ופיסוק בלבד, ולכן `&nbsp;` בין
שתי מילים חסם ביטוי שהמשתמש רואה כרווח רגיל. `stripHtmlIfNeeded` מפענח
ישויות ומסיר תגיות, ומחזיר את ההתנהגות שהייתה לפני המעבר למונה.

טסטים: ישות בין מילים, ותגית inline בתוך ביטוי.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

חיפוש בתוכן הקישורים לא עובד

1 participant