@sivan22 כתב בספריית החיפוש meilisearch ב-בC#:
בפרט טיפול מיוחד בעברית כולל הבנת שורשים מתקדמת עם מילון וגם אלגוריתמים, שזו עבודת נמלים לבנות לבד.
הספקת לבדוק ביצועים ב-meilisearch בנוגע לזה? מאוד מסקרן אותי כמה הם מוצלחים בזה בפרט בטקסטים של חז"ל.
@sivan22 כתב בספריית החיפוש meilisearch ב-בC#:
בפרט טיפול מיוחד בעברית כולל הבנת שורשים מתקדמת עם מילון וגם אלגוריתמים, שזו עבודת נמלים לבנות לבד.
הספקת לבדוק ביצועים ב-meilisearch בנוגע לזה? מאוד מסקרן אותי כמה הם מוצלחים בזה בפרט בטקסטים של חז"ל.
<!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>
מישהו יכול להגיד לי אולי אם זה
https://stackoverflow.com/a/85273/23343154
רעיון טוב?
@ששא
זו תוכנה בתשלום סימלי
בעל התוכנה איננו מבלה את זמנו בפורום ולכן ביקש ממך שתפנה אליו בצורה מסודרת למייל.
@ששא
תפנה ל-@יואל-שילה הוא בעל התוכנה
@אלף-שין,
כמישהו שחקר את הנושא למעלה משנה, אני רוצה לשתף אותך בתובנות שלי. התיאוריה של בניית אינדקסים באמת נשמעת פשוטה וקליטה, אבל היישום הרבה יותר מורכב. דוגמה קטנה לכך:
כשאינדקס שוקל כמה גיגה-בייטים, כמה זמן לדעתך לוקח לקרוא את התוכן שלו בצורה הקלאסית של קריאת תוכן קובץ? הבעיה היא שאי אפשר לטעון אינדקס כזה לזיכרון ה-RAM כי הוא גדול מדי. לכן, נאלצים לעבור שורה שורה באינדקס בזמן החיפוש.
אני מקצר כי אין לי כוח להאריך, אבל תאמין לי, בניית אינדקס זה לא דבר של מה בכך. במיוחד כשמדובר באינדקסים גדולים.
קוד קצר למרכז כפתורים בפקד ToolBar ב-WPF כך שבמקום להיות מוצמדים לצד הכפתורים יהיו מוצמדים למרכז:
בלי:

עם:

<ToolBar.Resources>
<Style TargetType="{x:Type ToolBarPanel}">
<Setter Property="HorizontalAlignment" Value="Center"/>
</Style>
</ToolBar.Resources>
מישהו יכול להדריך אותי איך ליצור שירות ברקע ב-C# עבור פעולת אינדוקס בתוכנת FullTextSearch? האינדוקס יכול לקחת כמה שעות טובות, ואני רוצה שהוא ימשיך לפעול גם אם התוכנה נסגרת או שהמשתמש מפעיל את המחשב מחדש.
כמו"כ איך אני מתקשר בין התוכנה שלי לשירות? אני רוצה להעביר לשירות מידע על המסמכים שצריך לאנדקס, ולקבל מידע על התקדמות האינדוקס שישוקף בתוכנה
@צדיק-תמים כתב בשיתוף | אב טיפוס של תוכנת תרגום אופליין:
@pcinfogmach הקישור הזה לא יעבוד למי שלא מחובר לחשבון שלך...
https://send.magicode.me/send-file/file/8052065871824******cd70eaa74deee22fdd75101daa8/view
להוריד כוכביות תקף ליומיים
@קומפיונט
כמדומני של'בקלות' יש תוכנה מעין זו שעובדת ממש יפה
עריכה:
הנה הוא שלח לי סרטון הדגמה
מצו"ב קוד להסרת שורות ריקות ממחרוזת טקסט ב-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);
}
@dovid כתב בספריית החיפוש meilisearch ב-בC#:
וזה הגיוני במידה והתוכנה שלך היא עם צד שרת.
כלומר לא הגיוני בתוכנה שלי תורת אמת בוורד?
@dovid
אוקיי אולי קפצתי מדאי מהר מדאי אני קצת מבין יותר טוב עכשיו איך זה עובד בעצם meiliserach הינה "תוכנה" שאני יכול לגשת אליה דרך api ב-C#
אבל לא מדובר בספרייה של C# כלל
@sivan22 כתב בספריית החיפוש meilisearch ב-בC#:
להפעיל את הקובץ בסיומת EXE, לא לסגור את החלון השחור.
גם בתוך התוכנה צריך שהחלון השחור ירוץ ברקע? לא נשמע פרקטי.....
@dovid כתב בספריית החיפוש meilisearch ב-בC#:
@pcinfogmach אני חושב שזה לא הגיוני לעשות את זה בקוד, זה אמור לפעול ברקע בקביעות, אם התוכנה שלך תרוץ פעמיים יהיה שגיאה של פורט תפוס. כמו"כ בתיעוד שמה מופיעה בדיקה לוודא שהמופע מאזין.
אולי לייצר service?
תכלס השגיאה הנ"ל עדיין קיימת
האם אפשר לייצר dll ב-C# ואח"כ להשתמש בן ב-flutter?
אשמח לכל מידע בנושא
@dovid כתב בספריית החיפוש meilisearch ב-בC#:
יש בהוראות שמה מקטע בשם run-meilisearch
שמה מבואר שצריך להריץ את המופע של התוכנה העצמאית שלהם, אתה יכול להוריד אותה פה:
https://github.com/meilisearch/meilisearch/releases/tag/v1.9.0
בWindows אתה צריך את meilisearch-windows-amd64.exe.
תודה אבל זה כבר היה בקוד שלי סליחה שלא הדגשתי חלק זה מספיק.
@pcinfogmach כתב בספריית החיפוש meilisearch ב-בC#:
private void StartMeiliSearch()
{
string appDirectory = AppDomain.CurrentDomain.BaseDirectory;
string meiliFileName = Path.Combine(appDirectory, "meilisearch-windows-amd64.exe");
_meiliSearchProcess = new Process
{
StartInfo = new ProcessStartInfo
{
FileName = meiliFileName,
Arguments = " --env production",
UseShellExecute = false,
RedirectStandardOutput = true,
RedirectStandardError = true,
CreateNoWindow = true
}
};
_meiliSearchProcess.Start();
}
ניסיתי ליצור פרוייקט דוגמא על פי המופיע כאן:
נתקלתי בשגיאה דלהלן:

מו"ב הקוד שעשיתי
<UserControl x:Class="TesterProject.MeilisearchView"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:local="clr-namespace:TesterProject"
mc:Ignorable="d"
d:DesignHeight="450" d:DesignWidth="800">
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="auto"/>
<RowDefinition Height="*"/>
</Grid.RowDefinitions>
<Grid Grid.Row="0" Margin="5">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="auto"/>
<ColumnDefinition Width="*"/>
</Grid.ColumnDefinitions>
<TextBox Name="SearchBox" Margin="5"
Grid.Column="1" Text="ברכות"/>
<StackPanel Orientation="Horizontal"
Grid.Column="0">
<Button Content="Search" Click="OnSearchButtonClick" Margin="5"/>
<Button Content="Index Files" Click="OnIndexButtonClick" Margin="5"/>
</StackPanel>
</Grid>
<ListBox Name="ResultsListBox" Grid.Row="1"/>
</Grid>
</UserControl>
using Microsoft.Win32;
using System.Diagnostics;
using System.Windows;
using System.Windows.Controls;
using System.IO;
using Meilisearch;
using System.Linq;
using System.Threading.Tasks;
using System;
namespace TesterProject
{
/// <summary>
/// Interaction logic for MeilisearchView.xaml
/// </summary>
public partial class MeilisearchView : UserControl
{
private readonly MeilisearchClient client;
Meilisearch.Index index;
private Process _meiliSearchProcess;
public MeilisearchView()
{
InitializeComponent();
client = new MeilisearchClient("http://localhost:7700");
index = client.Index("meiliIndex");
StartMeiliSearch();
Application.Current.Exit += (s, e) => { _meiliSearchProcess?.Kill(); };
}
private async void OnIndexButtonClick(object sender, RoutedEventArgs e)
{
await CreateIndex();
}
private async void OnSearchButtonClick(object sender, RoutedEventArgs e)
{
var searchTerm = SearchBox.Text;
await Search(searchTerm);
}
private void StartMeiliSearch()
{
string appDirectory = AppDomain.CurrentDomain.BaseDirectory;
string meiliFileName = Path.Combine(appDirectory, "meilisearch-windows-amd64.exe");
_meiliSearchProcess = new Process
{
StartInfo = new ProcessStartInfo
{
FileName = meiliFileName,
Arguments = " --env production",
UseShellExecute = false,
RedirectStandardOutput = true,
RedirectStandardError = true,
CreateNoWindow = true
}
};
_meiliSearchProcess.Start();
}
private async Task CreateIndex()
{
var openFileDialog = new OpenFileDialog
{
Multiselect = true
};
if (openFileDialog.ShowDialog() == true)
{
var documents = openFileDialog.FileNames.Select(fileName => new MeiliDoc
{
FileName = fileName,
Content = File.ReadAllText(fileName)
}).ToArray();
var task = await index.AddDocumentsAsync(documents); // # => { "uid": 0 }
MessageBox.Show("Indexing Done.");
}
}
private async Task Search(string searchTerm)
{
var results = await index.SearchAsync<MeiliDoc>(searchTerm);
ResultsListBox.Items.Clear();
foreach (var result in results.Hits)
{
ResultsListBox.Items.Add(result.FileName);
}
}
}
public class MeiliDoc
{
public string FileName { get; set; }
public string Content { get; set; }
}
}
מישהו מכיר את ספריית החיפוש meilisearch
האם מישהו יכול להמליץ לי עליה.
כמו:כ הייתי שמח לדעת האם היא מתאימה לתוכנה שלי תורת אמת בוורד