דילוג לתוכן
  • דף הבית
  • קטגוריות
  • פוסטים אחרונים
  • משתמשים
  • חיפוש
  • חוקי הפורום
כיווץ
תחומים

תחומים - פורום חרדי מקצועי

💡 רוצה לזכור קריאת שמע בזמן? לחץ כאן!
  1. דף הבית
  2. תכנות
  3. איך לבדוק אם 'קיים חלק ממחרוזת (ברצף) בתוך מסמך. בC#

איך לבדוק אם 'קיים חלק ממחרוזת (ברצף) בתוך מסמך. בC#

מתוזמן נעוץ נעול הועבר תכנות
8 פוסטים 2 כותבים 395 צפיות
  • מהישן לחדש
  • מהחדש לישן
  • הכי הרבה הצבעות
התחברו כדי לפרסם תגובה
נושא זה נמחק. רק משתמשים עם הרשאות מתאימות יוכלו לצפות בו.
  • pcinfogmachP מנותק
    pcinfogmachP מנותק
    pcinfogmach
    כתב ב נערך לאחרונה על ידי
    #1

    אני מנסה לעשות חיפוש בתוך מסמכי טקסט (זה פשוט) עם קבלת תוצאה גם על חלק מהמחרוזת. אבל דוקא ברצף.
    כלומר אם אני מחפש "ויאמר אלי העבד אולי"
    אני רוצה לקבל תוצאות גם עבור "ויאמר אלי" וגם עבור "אלי העבד" וכו'.
    לכאורה הדרך לבנות הרבה מיני מחרוזות לחיפוש. השאלה האם שי דרך יותר יעילה לעשות זאת.
    contains זה לא אופציה כי אני צריך תוצאות של מילים ברצף.
    מקווה שהייתי מספיק ברור.

    גמ"ח מידע מחשבים ואופיס

    תגובה 1 תגובה אחרונה
    0
    • dovidD מחובר
      dovidD מחובר
      dovid ניהול
      כתב ב נערך לאחרונה על ידי
      #2

      לא, לא היית ברור, וגם אני חושב שאתה לא יודע מה אתה רוצה.
      אם למשל היית רוצה גם תוצאות של כל מילה בנפרד, אז היית מתנסח מאוד פשוט, וגם לא היית אומר שזה "כל מיני מחרוזות" כי זה סה"כ פיצול של ביטוי החיפוש למילים ואיחוד התוצאות של כל אחד מהם.

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

      מנטור אישי למתכנתים (ולא רק) – להתקדם לשלב הבא!

      בכל נושא אפשר ליצור קשר dovid@tchumim.com

      pcinfogmachP תגובה 1 תגובה אחרונה
      2
      • pcinfogmachP מנותק
        pcinfogmachP מנותק
        pcinfogmach
        השיב לdovid ב נערך לאחרונה על ידי pcinfogmach
        #3

        אוקיי בוא ננסה לשאול את השאלה שוב:
        ו@dovid אתה צודק שאני לא בטוח במאה אחוז מה אני מנסה לעשות. ייתכן שהשאלה שלי היא בעצם איך ליצור מנוע חיפוש יותר יעיל. בוא נראה.

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

        הרעיון שלי היה בעצם לערוך חיפוש של טקסטים שמכילים את הטקסט שהמשתמש הזין אבל לקבל גם תוצאות חלקיות.
        כרגיל כשרוצים לקבל גם תוצאות חלקיות מה שעושים זה ליצור מערך של נקודות כלומר אם המסמך מכיל X כמות של מילים מתוך המחרוזת שקיבלת אז הוא מסומן כהתאמה.
        אבל מה שקורה שאז מקבלים גם תוצאות שבכלל לא רלונטיות ובפרט אם אתה המחפש בתוך מחרוזת ארוכה שעלולה להכיל את המילים שהזנת בתפזורת גדולה.
        אז מה שעושים זה ליצור סדר תוצאות לפי כל מיני שיטות ניקוד.

        אני חשבתי אולי לסנן חלק מהתוצאות שאינן רלוונטיות על ידי הרעיון הנ"ל של חיפוש זוגות של מילים במקום מילים בודדות.

        גמ"ח מידע מחשבים ואופיס

        תגובה 1 תגובה אחרונה
        0
        • dovidD מחובר
          dovidD מחובר
          dovid ניהול
          כתב ב נערך לאחרונה על ידי
          #4

          @pcinfogmach כן, אתה צריך לבנות אינדקס כמו שתיארתי לך בעבר.
          ואז זה לא בעיה כי כל התאמת מילה מעלה את הציון של התוצאה, ואתה מציג את התוצאות הטובות ביותר.

          מנטור אישי למתכנתים (ולא רק) – להתקדם לשלב הבא!

          בכל נושא אפשר ליצור קשר dovid@tchumim.com

          pcinfogmachP תגובה 1 תגובה אחרונה
          0
          • pcinfogmachP מנותק
            pcinfogmachP מנותק
            pcinfogmach
            השיב לdovid ב נערך לאחרונה על ידי
            #5

            @dovid כתב באיך לבדוק אם 'קיים חלק ממחרוזת (ברצף) בתוך מסמך. בC#:

            @pcinfogmach כן, אתה צריך לבנות אינדקס כמו שתיארתי לך בעבר.
            ואז זה לא בעיה כי כל התאמת מילה מעלה את הציון של התוצאה, ואתה מציג את התוצאות הטובות ביותר.

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

            גמ"ח מידע מחשבים ואופיס

            תגובה 1 תגובה אחרונה
            0
            • dovidD מחובר
              dovidD מחובר
              dovid ניהול
              כתב ב נערך לאחרונה על ידי dovid
              #6

              כיון שכל התאמת מילה מעלה את הציון, והתאמה של שני מילים מעלה אותו ביותר מכפול וכולי, אז התוצאות שיופיעו הם הרלוונטיות (אתה משמיט מה שמתחת לציון X).
              פעם פעם כתבתי לך איך צריך לעשות אינדקס,
              היה לך בעיה עם הSQLITE ובסוף לא התקדמת עם זה.
              זה הדרך הנכונה לעשות כזה דבר.

              מנטור אישי למתכנתים (ולא רק) – להתקדם לשלב הבא!

              בכל נושא אפשר ליצור קשר dovid@tchumim.com

              pcinfogmachP תגובה 1 תגובה אחרונה
              0
              • pcinfogmachP מנותק
                pcinfogmachP מנותק
                pcinfogmach
                השיב לdovid ב נערך לאחרונה על ידי
                #7

                @dovid
                סליחה אבל אני עדיין מתקשה בהבנה. אשמח אם מישהו יסביר לי.

                גמ"ח מידע מחשבים ואופיס

                תגובה 1 תגובה אחרונה
                0
                • dovidD מחובר
                  dovidD מחובר
                  dovid ניהול
                  כתב ב נערך לאחרונה על ידי
                  #8

                  אתה מחפש למשל "ויאמר אלי העבד אולי"
                  אתה בונה רשימה של מיקומים שנמצאו של המילה הראשונה, ככה:
                  מסמך, מיקום, מילה
                  כעת אתה מחפש את המילה השניה, ומוסיך לרשימת המיקומים.
                  וכן הלאה.
                  בסוף אתה מקבץ את הרשימה לפי מסמך, וממיין את תת הרשימה לפי מיקום.
                  אתה עובר על הרשימה, וכל פעם בודק מרחק מהמילה הקודמת.
                  למשל:
                  בראשית 950 ויאמר
                  בראשית 1100 אלי
                  בראשית 1200 ויאמר
                  בראשית 1300 העבד
                  בראשית 1320 ויאמר
                  בראשית 1321 אלי
                  בראשית 1322 העבד
                  בראשית 1323 אלי

                  אתה עובר בלולאה על המופעים, לכל אחד מהמופעים תצמיד שני מאפיינים: ציון מספרי שיהיה 25 (למשל, כמאה לחלק למספר מילות החיפוש), ומאפיין סט שיכיל את המילים הנוספות שיכולות להיחשב כסט עם התוצאה הנוכחית.
                  בכל אחד, נניח בראשון, אתה בודק את המרחק בינו לזה שלאחריו, אם הוא קטן ממרחק עליו החלטת כמקסימלי למשל 20, והמילה הבאה אחריו לא מופיעה כבר בסט, אתה מוסיף לציון שלו את ציון האות שאחריו, ומוסיף את האות לסט שלו.
                  כעת אתה עובר למילה הבאה, ובודק אותו דבר עד שאתה חורג מהמרחק 20, שאז אתה מתחיל את התהליך שוב עם התוצאה מס' 2.
                  בסוף אתה יכול לחלק ציון גבוה יותר בכל תוצאה שבה צמדי מילים בסט הם בסדר המקורי של מילות השאילתה ולא להיפך, ועוד ציון לכאלה שהצמד בא רצוף.
                  בסופו של תהליך אתה משמיט מי שהציון שלו נמוך מ75 או 50.

                  מנטור אישי למתכנתים (ולא רק) – להתקדם לשלב הבא!

                  בכל נושא אפשר ליצור קשר dovid@tchumim.com

                  תגובה 1 תגובה אחרונה
                  2

                  בא תתחבר לדף היומי!
                  • התחברות

                  • אין לך חשבון עדיין? הרשמה

                  • התחברו או הירשמו כדי לחפש.
                  • פוסט ראשון
                    פוסט אחרון
                  0
                  • דף הבית
                  • קטגוריות
                  • פוסטים אחרונים
                  • משתמשים
                  • חיפוש
                  • חוקי הפורום