ספריית החיפוש meilisearch ב-בC#
-
מישהו מכיר את ספריית החיפוש meilisearch
האם מישהו יכול להמליץ לי עליה.
כמו:כ הייתי שמח לדעת האם היא מתאימה לתוכנה שלי תורת אמת בוורד -
ניסיתי ליצור פרוייקט דוגמא על פי המופיע כאן:
נתקלתי בשגיאה דלהלן:מו"ב הקוד שעשיתי
<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; } } }
-
יש בהוראות שמה מקטע בשם run-meilisearch
שמה מבואר שצריך להריץ את המופע של התוכנה העצמאית שלהם, אתה יכול להוריד אותה פה:
https://github.com/meilisearch/meilisearch/releases/tag/v1.9.0
בWindows אתה צריך את meilisearch-windows-amd64.exe. -
@pcinfogmach כתב בספריית החיפוש meilisearch ב-בC#:
מישהו מכיר את ספריית החיפוש meilisearch
האם מישהו יכול להמליץ לי עליה.
כמו:כ הייתי שמח לדעת האם היא מתאימה לתוכנה שלי תורת אמת בוורדאני כרגע מנסה אותה בשביל פרוייקט שלי, החיסרון המשמעותי הוא הגודל העצום של האינדקס, היא מיועדת בעיקר לשרתים ולא למשתמשי קצה ולכן אין אופטימיזציה של הגודל. אפשר לבדוק אינדקס שעשיתי לחלק מאוצריא כאן:
הצלחתי בינתיים ליצור אינדקס ל86% מהמאגר , זה שוקל 13 ג'יגה, דחסתי ל3.4 ג'יגה, ואפשר להוריד מכאן: https://drive.google.com/file/d/1NatVo7uHiCODzJ-t_NT9qJiVmgxMvBur/view?usp=sharingהוראות שימוש:
יש לחלץ את הקבצים באמצעות zip7
להפעיל את הקובץ בסיומת EXE, לא לסגור את החלון השחור.
לפתוח את הדפדפן בכתובת http://localhost:7700/
לחיפוש מדוייק יש להקיף את החיפוש במרכאות: "ביטוי לחיפוש מדוייק"
בלי מרכאות הוא מחפש חיפוש חופשי לפי רלוונטיות. מעניין אותי לשמוע תגובות על הרמה. -
@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();
} -
חוץ מהמיני דאשבורד המוגבל שמגיע מובנה, מצאתי דאשבורד מאד נחמד (הצלחתי להריץ עם דוקר): https://github.com/riccox/meilisearch-ui
-
@dovid כתב בספריית החיפוש meilisearch ב-בC#:
@pcinfogmach אני חושב שזה לא הגיוני לעשות את זה בקוד, זה אמור לפעול ברקע בקביעות, אם התוכנה שלך תרוץ פעמיים יהיה שגיאה של פורט תפוס. כמו"כ בתיעוד שמה מופיעה בדיקה לוודא שהמופע מאזין.
אולי לייצר service?
תכלס השגיאה הנ"ל עדיין קיימת
-
@sivan22 כתב בספריית החיפוש meilisearch ב-בC#:
להפעיל את הקובץ בסיומת EXE, לא לסגור את החלון השחור.
גם בתוך התוכנה צריך שהחלון השחור ירוץ ברקע? לא נשמע פרקטי.....
-
@pcinfogmach כתב בספריית החיפוש meilisearch ב-בC#:
תכלס השגיאה הנ"ל עדיין קיימת
מידע אינפורמטיבי מעולה בשביל משתמש נחמד בפורום אופיס. כמתכנת אתה אמור ללכת צעד צעד ולתת קצת יותר אינפורמציה. המופע רץ? הכתובת זמינה? זה דברים שכתבתי וגם הם בהדרכה, ואתה מדלג עליהם בלי לשים לב ישירות לשגיאה.
כמו כן הדיבור שלך בקשר לפרקטיקה עם יישום ברקע, זה מראה כמה שאתה קופץ, לא מדברים בעת פיתוח על אריזת הצלופן.
סליחה על המוסר, חזק ואמץ.
-
@dovid כתב בספריית החיפוש meilisearch ב-בC#:
וזה הגיוני במידה והתוכנה שלך היא עם צד שרת.
כלומר לא הגיוני בתוכנה שלי תורת אמת בוורד?