@אלף-שין
אני מעריך את הרצון שלך להעמיק ולחקור את התחום, אך ברצוני להציע לך לשקול לא להשקיע את זמנך בדברים הללו. חקירה שטחית של נושא מורכב כמו אינדוקס ללא הבנה מעמיקה יותר עלולה לגזול זמן רב ויקר ממך ולא להביא לתוצאות הרצויות.
בהצלחה בדרכך!
pcinfogmach
-
באיזה תוכנת אינדקס גוגל משתמשים? -
באיזה תוכנת אינדקס גוגל משתמשים?@yossiz כתב בבאיזה תוכנת אינדקס גוגל משתמשים?:
עיין כתבה זו על האתגרים המיוחדים בעברית
הכתבה הנ"ל לבסוף הובילה לפרוייקט יפה מאוד שקורים לו HEBMORPH.
ברצוני לכתוב כמה השגות שהיו לי על פרוייקט זה - בעצם כמנוע חיפוש כללי הוא באמת משדרג את החיפוש בהמון. חשוב לציין שהמילון שהוא משתמש בו נמצא בשימוש על ידי מנוע החיפוש של גוגל ועוד כמה מנועי חיפוש מפורסמים והעקרונות שלו ה עקרונות חזקים ומנוסים.יחד עם זאת כשמדברים על HEBMORPH ודומיו, חשוב להבין שמדובר בפרויקט שמנסה לבנות חיפוש חכם בעברית. אבל האם חיפוש חכם מתאים תמיד לצרכי המשתמש? אני לא בטוח. ניקח לדוגמה את הסרת ה-stopwords (מילים כמו "כי"). בחיפוש כללי, זה מייעל את האינדוקס והחיפוש, אבל בחיפוש תורני, לעיתים עדיף לחפש את המשפט כולל "כי", במיוחד בחיפוש פסוקים. בנוסף, הפרויקט HEBMORPH מבוסס על מילון עברי כללי, מה שמפחית את ביצועיו בחיפוש תורני.
עריכה: כל זה נכון אם יש לך אמפמינציה אישית של lucene אבל אם אתה משתמש בו כמות שהוא אתה רק מרוויח אם אתה משתמש ב-HEBMORPH למה? כי Lecene הינו מנוע חיפוש ולשכך הוא בנוי על אלגוריתמים שמחשבים רלוונטיות וממילא כל כלי שמתעל את הרלוונטיות מתעל את המנוע.
הנקודה היא שקשה לייצר מנוע חיפוש כוללני כי הצרכים משתנים ממקרה למקרה.
אישית בתוכנות שלי ב-C# אני לא משתמש ב- HEBMORPH מחמת סיבה צדדית, כי הוא לא מעודכן לגרסה האחרונה של Lucene, מה שמקשה מאוד על השימוש בו. אציין גם שיש חלקים בקוד שהם ממש לא אינטואיטיביים, כך שהתייאשתי לבינתיים מלנסות להתאים את HEBMORPH לגרסה הנוכחית. זה יצריך ממני ללמוד לעומק את הגרסה הישנה ואז לתרגם אותה לחדשה, ואין לי את הזמן או את העצבים לזה.
-
איך לוודא שסגירת משאבים תתבצע גם בעת עצירת ניפוי באגים ב-Visual Studio?@yossiz
הסיבה לסגור את התוכנה מה-debugger הוא במקרה שיש באג שתוקע את ה-UI -
דלתות הזזה עבור מחסן מפנלית בבניה עצמאיתחוץ מהשאלה שלך שים לב שדלת הזזה מאוד קשה לאטום מבחינת מזג אויר
-
מחשב של אוצר החכמה מתחמם@אנא
אם המחשב מתחמם באופן קיצוני ללא הפוגה (לא נעים לגעת בו) אכן זה לא טוב למחשב
קשה לדעת באיזה ארון מדובר אבל מסתמא תוכל לייצר איזשהו פתח אוורור שכנראה מאוד נצרך עדיף כמה שיותר קרוה לפתח של המאוורר וכמובן לוודא שהפתח של המאוורר פתוח לאוויר ולא צמוד לגב הארון או משהו כזה -
איך לוודא שסגירת משאבים תתבצע גם בעת עצירת ניפוי באגים ב-Visual Studio?יש לי קוד שמופעל כאשר התוכנה נסגרת כדי לסגור משאבים שלא נסגרים אוטומטית (כמו חיבורי COM שגיליתי שנשארים פתוחים באמצעות בדיקה ב-Task Manager).
הבעיה היא שאם אני לוחץ על לחצן ה-Stop ב-Visual Studio במהלך ניפוי הבאגים (debugging), הקוד לסגירת המשאבים לא רץ, מה שגורם לשגיאות לא נעימות בתוכנה בכל פעם מחדש.
האם יש דרך לפתור את הבעיה הזו? -
קוד עבור ProgressDialog ב-C#אמנם יש דברים כבר קיימים ויש גם כאלה שמשתמשים בAPI של ווינדוס אבל מטעמים שונים לא הייתי מרוצה מהם ולכן עשיתי את הקוד דלהלן:
הקוד מציג את ההתקדמות על יד progressbar
ועל ידי הצגת התקדמות מתוך ה-maximum כטקסט
הקוד מציג גם את ההתקדמות באייקון בשורת המשימות
הקוד מציג את ההתקדמות גם בפעולות asyncהקוד הוא בגדר סקיצה ואשמח מאוד לקבל משוב:
using System; using System.Windows.Controls; using System.Windows; using System.Windows.Data; using System.Windows.Shell; namespace FullText.Controls { public static class ProgressDialog { public static IProgress<double> Start(string message, int maximum) { IProgress<double> reporter = null; Application.Current.Dispatcher.Invoke(() => { TextBlock textBlock = new TextBlock { Text = message, TextWrapping = TextWrapping.WrapWithOverflow, Margin = new Thickness(5), }; ProgressBar progressBar = new ProgressBar { Maximum = maximum}; TextBlock percentageTextBlock = new TextBlock { HorizontalAlignment = HorizontalAlignment.Center, VerticalAlignment = VerticalAlignment.Center , Margin = new Thickness(1) }; Binding binding = new Binding("Value") { Source = progressBar, StringFormat = $"{{0:0}} \\ {maximum}" }; percentageTextBlock.SetBinding(TextBlock.TextProperty, binding); Grid grid = new Grid { Margin = new Thickness(5) }; grid.Children.Add(progressBar); grid.Children.Add(percentageTextBlock); StackPanel stackPanel = new StackPanel(); stackPanel.Children.Add(grid); stackPanel.Children.Add(textBlock); Window window = new Window { Content = stackPanel, SizeToContent = SizeToContent.WidthAndHeight, FlowDirection = FlowDirection.RightToLeft, Owner = Application.Current.MainWindow, ResizeMode = ResizeMode.CanMinimize }; TaskbarItemInfo taskbarItemInfo = new TaskbarItemInfo(); //Application.Current.MainWindow.TaskbarItemInfo = taskbarItemInfo; window.TaskbarItemInfo = taskbarItemInfo; taskbarItemInfo.ProgressState = TaskbarItemProgressState.Normal; reporter = new Progress<double>(OnProgressChanged); void OnProgressChanged(double incrementValue) { if (incrementValue == -1) { taskbarItemInfo.ProgressState = TaskbarItemProgressState.None; window.Close(); } //else if (progressBar.Value >= progressBar.Maximum) { window.Close(); taskbarItemInfo.ProgressState = TaskbarItemProgressState.None; } else { progressBar.Value += incrementValue; taskbarItemInfo.ProgressValue = (double)progressBar.Value / progressBar.Maximum; } } window.Show(); }); return reporter; } } }צורת שימוש
התחלהvar progressReporter = ProgressReporter.Start($"מאנדקס את: {directoryToIndex}", files.Count);התקדמות
progressReporter.Report(1);סיום וסגירה
progressReporter.Report(-1); -
ספריית החיפוש meilisearch ב-בC#@אלף-שין
כשזהו החיסרון היחיד זה מתגמד לעומת כל שאר התועליות -
ספריית החיפוש meilisearch ב-בC#@sivan22 כתב בספריית החיפוש meilisearch ב-בC#:
בפרט טיפול מיוחד בעברית כולל הבנת שורשים מתקדמת עם מילון וגם אלגוריתמים, שזו עבודת נמלים לבנות לבד.
הספקת לבדוק ביצועים ב-meilisearch בנוגע לזה? מאוד מסקרן אותי כמה הם מוצלחים בזה בפרט בטקסטים של חז"ל.
-
דף html עם חיפוש טקסט (עם רגקס)<!DOCTYPE html> <html lang="auto"> <head> <meta charset="UTF-8"> <title>Search Highlight Page</title> <style> body {margin:0;} .highlight { background-color: yellow; } .selected-highlight { background-color: orange; } </style> </head> <body dir='rtl'> <div id="searchContainer" style="position: fixed; top: 0; margin:0; padding: 5px; width: 100%; background-color:whitesmoke;"> <input type="text" id="searchBar" placeholder="הזן טקסט לחיפוש" style="border: none; padding:5px;" onkeydown="handleEnter(event)"> <button id="searchButton" style="border: none; padding:5px;" onclick="searchNext()">חפש</button> <button id="previousButton" style="border: none; padding:5px;" onclick="searchPrevious()">הקודם</button> <label><input type="checkbox" id="regexCheckbox"> חיפוש בעזרת Regex</label> </div> <div id="content" style="padding-top: 25px; margin:5px;"> <!-- Example content to search through --> <p>וידאו מספק דרך רבת-עוצמה שתעזור לך להוכיח את הנקודה שלך. בעת הלחיצה על 'וידאו מקוון', באפשרותך להדביק את הקוד המוטבע של הווידאו שברצונך להוסיף. ניתן גם להקליד מילת מפתח כדי לחפש באופן מקוון אחר וידאו שיתאים בצורה הטובה ביותר למסמך שלך.</p> <p>כדי להעניק למסמך שלך מראה מקצועי, Word מספק עיצובים של כותרת עליונה, כותרת תחתונה, עמוד שער ותיבת טקסט אשר משלימים זה את זה. לדוגמה, באפשרותך להוסיף עמוד שער, כותרת עליונה וסרגל צידי תואמים. לחץ על 'הוסף' ולאחר מכן בחר את הרכיבים הרצויים מהגלריות השונות.</p> <p>ערכות נושא וסגנונות גם שומרים על התיאום של המסמך שלך. בעת הלחיצה על 'עיצוב' ובחירת ערכת נושא חדשה, התמונות, התרשימים וגרפיקת SmartArt משתנים בהתאם לערכת הנושא החדשה שלך. בעת החלת סגנונות, הכותרות משתנות בהתאם לערכת הנושא החדשה.</p> <p>חסוך זמן בעבודה ב- Word בעזרת לחצנים חדשים המופיעים במקומות הנכונים. כדי לשנות את אופן ההתאמה של תמונה למסמך, לחץ עליה ולצידה יופיע לחצן של אפשרויות פריסה. בעת העבודה על טבלה כלשהי, לחץ במקום שבו ברצונך להוסיף שורה או עמודה, ולאחר מכן לחץ על סימן החיבור.</p> <p>כמו כן, קל יותר לקרוא בתצוגת הקריאה החדשה. באפשרותך לכווץ חלקים של המסמך ולהתמקד בטקסט הרצוי. אם עליך להפסיק לקרוא לפני שאתה מגיע לסוף המסמך, Word זוכר את המקום שאליו הגעת - אפילו בהתקן אחר.</p> </div> <script> let currentIndex = 0; let previousSearchTerm = ""; let direction = 'next'; function removeHighlights() { const highlights = document.querySelectorAll('.highlight, .selected-highlight'); highlights.forEach(highlight => { const parent = highlight.parentNode; while (highlight.firstChild) { parent.insertBefore(highlight.firstChild, highlight); } parent.removeChild(highlight); }); } function highlightSearchTerm(searchTerm, useRegex) { const regex = useRegex ? new RegExp(`(${searchTerm})`, 'gi') : new RegExp(`(${searchTerm.replace(/[.*+?^${}()|[\]\\]/g, '\\$&')})`, 'gi'); const content = document.getElementById('content'); content.innerHTML = content.innerHTML.replace(regex, '<span class="highlight">$1</span>'); } function searchAndHighlight() { const searchTerm = document.getElementById('searchBar').value; const useRegex = document.getElementById('regexCheckbox').checked; removeHighlights(); if (searchTerm) { highlightSearchTerm(searchTerm, useRegex); const highlightedElements = document.querySelectorAll('.highlight'); if (highlightedElements.length) { if (searchTerm === previousSearchTerm && direction === 'next') { currentIndex++; if (currentIndex >= highlightedElements.length) { currentIndex = 0; } } else if (searchTerm === previousSearchTerm && direction === 'previous') { currentIndex--; if (currentIndex < 0) { currentIndex = highlightedElements.length - 1; } } else { currentIndex = 0; } highlightedElements.forEach(element => element.classList.remove('selected-highlight')); highlightedElements[currentIndex].classList.add('selected-highlight'); highlightedElements[currentIndex].scrollIntoView({ block: "center" }); } } else { alert('Please enter a search term.'); } previousSearchTerm = searchTerm; } function searchPrevious() { direction = 'previous'; searchAndHighlight(); } function searchNext() { direction = 'next'; searchAndHighlight(); } function handleEnter(event) { if (event.key === 'Enter') { event.preventDefault(); // Prevent default Enter key behavior (like form submission) searchNext(); } } </script> </body> </html> -
C#: כיצד ליצור אינדקס ברקע באמצעות שירות Windowsמישהו יכול להגיד לי אולי אם זה
https://stackoverflow.com/a/85273/23343154
רעיון טוב? -
שיתוף | אב טיפוס של תוכנת תרגום אופליין@ששא
זו תוכנה בתשלום סימלי
בעל התוכנה איננו מבלה את זמנו בפורום ולכן ביקש ממך שתפנה אליו בצורה מסודרת למייל. -
שיתוף | אב טיפוס של תוכנת תרגום אופליין@ששא
תפנה ל-@יואל-שילה הוא בעל התוכנה -
ספריית החיפוש meilisearch ב-בC#@אלף-שין,
כמישהו שחקר את הנושא למעלה משנה, אני רוצה לשתף אותך בתובנות שלי. התיאוריה של בניית אינדקסים באמת נשמעת פשוטה וקליטה, אבל היישום הרבה יותר מורכב. דוגמה קטנה לכך:כשאינדקס שוקל כמה גיגה-בייטים, כמה זמן לדעתך לוקח לקרוא את התוכן שלו בצורה הקלאסית של קריאת תוכן קובץ? הבעיה היא שאי אפשר לטעון אינדקס כזה לזיכרון ה-RAM כי הוא גדול מדי. לכן, נאלצים לעבור שורה שורה באינדקס בזמן החיפוש.
אני מקצר כי אין לי כוח להאריך, אבל תאמין לי, בניית אינדקס זה לא דבר של מה בכך. במיוחד כשמדובר באינדקסים גדולים.
-
איך למרכז כפתורים בפקד ToolBar ב-WPFקוד קצר למרכז כפתורים בפקד ToolBar ב-WPF כך שבמקום להיות מוצמדים לצד הכפתורים יהיו מוצמדים למרכז:
בלי:

עם:

<ToolBar.Resources> <Style TargetType="{x:Type ToolBarPanel}"> <Setter Property="HorizontalAlignment" Value="Center"/> </Style> </ToolBar.Resources> -
C#: כיצד ליצור אינדקס ברקע באמצעות שירות Windowsמישהו יכול להדריך אותי איך ליצור שירות ברקע ב-C# עבור פעולת אינדוקס בתוכנת FullTextSearch? האינדוקס יכול לקחת כמה שעות טובות, ואני רוצה שהוא ימשיך לפעול גם אם התוכנה נסגרת או שהמשתמש מפעיל את המחשב מחדש.
כמו"כ איך אני מתקשר בין התוכנה שלי לשירות? אני רוצה להעביר לשירות מידע על המסמכים שצריך לאנדקס, ולקבל מידע על התקדמות האינדוקס שישוקף בתוכנה
-
שיתוף | אב טיפוס של תוכנת תרגום אופליין@צדיק-תמים כתב בשיתוף | אב טיפוס של תוכנת תרגום אופליין:
@pcinfogmach הקישור הזה לא יעבוד למי שלא מחובר לחשבון שלך...
https://send.magicode.me/send-file/file/8052065871824******cd70eaa74deee22fdd75101daa8/view
להוריד כוכביות תקף ליומיים
-
שיתוף | אב טיפוס של תוכנת תרגום אופליין@קומפיונט
כמדומני של'בקלות' יש תוכנה מעין זו שעובדת ממש יפה
עריכה:
הנה הוא שלח לי סרטון הדגמה -
הסרת שורות ריקות מ-string ב-C#מצו"ב קוד להסרת שורות ריקות ממחרוזת טקסט ב-C#
אשמח לקבל משובpublic static string RemoveEmptyLines(this string input) { var lines = input.Split(new[] { '\r', '\n' }, StringSplitOptions.RemoveEmptyEntries); var nonEmptyLines = lines.Where(line => !string.IsNullOrWhiteSpace(line)); return string.Join("\n", nonEmptyLines); }