@dovid
הצטברות של פעולות כלומר הרצה של הקוד על כמה מסמכים אחד אחרי השני - ככל שכמות המסמכים גדלה כן גדל הפער בביצועים.
יצויין שהמסמכים המדוברים הם מסמכים קצרים מאוד של טקסט. (בערך באורך של פרק א במשניות ברכות)
כמות המופעים היה במאות או אם חיפשתי מילה כמו "כי" אז באלפים.
נראה לי שהעבודה שעשיתי על התוצאות איננה רלוונטית מכיוון שהיא בעצם זהה בשני השיטות רק צורת השליפה היא שונה.
בכל אופן מצו"ב הקודים של שני הבדיקות
- קוד הרגקס
string pattern = "(\\b\\w+\\W+){0,10}" + Regex.Escape(searchTerm) + "(\\W+\\w+\\b){0,10}";
MatchCollection matches = Regex.Matches(textToSearch, pattern);
if (matches.Count > 0)
{
foreach (Match match in matches)
{
string result = match.Value;
result = Regex.Replace(result, @"<.*?>|[^א-ת\.""':, \(\)[]\{\}]", " ");
result = result.Replace(searchTerm, "<span style=\"color: red;\">" + searchTerm + "</span>");
fileIndexes[filePath].Add($"<li><a href='#{HttpUtility.HtmlEncode(fileName)}%{HttpUtility.HtmlEncode(chapterName)}' onclick='showMessage(this)'>{fileName} {chapterName}</a><br>{result}</li>");
resultPagesSum++;
}
}
- הקוד של gpt
List<string> snippets = SplitStringIntoSnippets(textToSearch, 30);
foreach (string snippet in snippets)
{
if (snippet.Contains(searchTerm))
{
string result = Regex.Replace(snippet, @"<.*?>|[^א-ת\.""':, \(\)[]\{\}]", " ");
result = result.Replace(searchTerm, "<span style=\"color: red;\">" + searchTerm + "</span>");
fileIndexes[filePath].Add($"<li><a href='#{HttpUtility.HtmlEncode(fileName)}%{HttpUtility.HtmlEncode(chapterName)}' onclick='showMessage(this)'>{fileName} {chapterName}</a><br>{result}</li>");
resultPagesSum++;
}
}
static List<string> SplitStringIntoSnippets(string input, int maxSnippetLength)
{
List<string> snippets = new List<string>();
string[] words = input.Split(new char[] { ' ', '\t', '\n' }, StringSplitOptions.RemoveEmptyEntries);
int wordCount = 0;
int currentIndex = 0;
for (int i = 0; i < words.Length; i++)
{
wordCount++;
if (wordCount >= maxSnippetLength)
{
snippets.Add(string.Join(" ", words, currentIndex, maxSnippetLength));
currentIndex = i + 1;
wordCount = 0;
}
}
if (currentIndex < words.Length)
{
snippets.Add(string.Join(" ", words, currentIndex, words.Length - currentIndex));
}
return snippets;
}
ועוד שאלה:
@dovid כתב בשאלה בC#: מה הדרך הכי טובה להוציא גזירים מתוך קטע טקסט?:
קוד טוב יהיה טוב יותר מרגקס (נכון להיום בדוטנט)
אם אני צריך לעבד טקסט על ידי שורה של החלפות.
האם זה אומר שעדיף לעשות שורה של פקודות replace במקום regex replace אחד שכולל הרבה אפשרויות?