Αυτό το άρθρο είναι ένα άρθρο καθρέφτη της αυτόματης μετάφρασης, κάντε κλικ εδώ για να μεταβείτε στο αρχικό άρθρο.

Άποψη: 4068|Απάντηση: 2

[Πηγή] [Πρακτική μάχη] Χρησιμοποιήστε Lucene.Net + Jieba.NET για να δημιουργήσετε μια ελαφριά αναζήτηση στον ιστότοπο

[Αντιγραφή συνδέσμου]
Δημοσιεύτηκε στις 2023-10-29 18:05:43 | | | |
απαιτήσεις: Η αναζήτηση πλήρους κειμένου στον ιστότοπο είναι μια λειτουργία που χρησιμοποιείται συνήθως και χρησιμοποιείται συνήθως με βάση αυτήνElasticSearchΣολρΑνάπτυξη και ανάπτυξη, και τώρα κυκλοφόρησαν δύο νέαRedisSearchMeiliSearchΜηχανή αναζήτησης, τα δύο πρώτα είναι βαρύτερα, αν και τα δύο τελευταία δεν είναι τόσο βαριά όσο τα δύο πρώτα, αλλά πρέπει να αναπτύξουν εξαρτημένες υπηρεσίες, αυτό το άρθρο χρησιμοποιεί Lucene.Net + Jieba.NET για να δημιουργήσει μια ελαφριά επιτόπια αναζήτηση.

Lucene.Net

Lucene.Net είναι μια θύρα .NET του Lucene και είναι ένα κιτ ανάπτυξης μηχανών αναζήτησης πλήρους κειμένου ανοιχτού κώδικα, δηλαδή δεν είναι μια πλήρης μηχανή αναζήτησης πλήρους κειμένου, αλλά μια αρχιτεκτονική μηχανής αναζήτησης πλήρους κειμένου που παρέχει μια πλήρη μηχανή ερωτημάτων και μηχανή ευρετηρίασης.

Τοποθεσία:Η σύνδεση με υπερσύνδεσμο είναι ορατή.
Διεύθυνση GitHub:Η σύνδεση με υπερσύνδεσμο είναι ορατή.

Jieba.NET

Jieba.NET είναι μετοχή κινέζικο jieba. Έκδοση .NET (υλοποίηση C#). Μπορεί να εκτελέσει λειτουργίες όπως τμηματοποίηση λέξεων, σχολιασμός μέρους του λόγου, εξαγωγή λέξεων-κλειδιών κ.λπ. για κινεζικό κείμενο και υποστηρίζει προσαρμοσμένα λεξικά.

Διεύθυνση GitHub:Η σύνδεση με υπερσύνδεσμο είναι ορατή.

Αρχικά, ας ρίξουμε μια ματιά στις αποδόσεις:




Προσαρμογή του αναλυτή

Analyzer, TokenStream, Tokenizer, TokenFilterTokenStream στο Lucene TokenStream: Μια ροή που λαμβάνεται μετά την επεξεργασία του tokenizer. Αυτή η ροή αποθηκεύει διάφορες πληροφορίες σχετικά με την τμηματοποίηση λέξεων, οι οποίες μπορούν να ληφθούν αποτελεσματικά μέσω του TokenStream. Ακολουθεί η διαδικασία μετατροπής της ροής αρχείων σε TokenStream Αρχικά, χρησιμοποιήστε το Tokenizer για να τμηματοποιήσετε τις λέξεις, διαφορετικοί tokenizers έχουν διαφορετικά tokenziers, αφού διαχωριστεί το tokenzier, φιλτράρετε τα δεδομένα που έχουν χωριστεί σε λέξεις μέσω του TokenFilter, όπως λέξεις διακοπής. Μετά το φιλτράρισμα, συνδυάστε όλα τα δεδομένα σε ένα TokenStream.

Αναφορά:

Η σύνδεση με υπερσύνδεσμο είναι ορατή.
Η σύνδεση με υπερσύνδεσμο είναι ορατή.
Η σύνδεση με υπερσύνδεσμο είναι ορατή.


Για να προσαρμόσετε τον αναλυτή Lucene με βάση Jieba.NET, η πρώτη αναφορά είναι η εξής:



Ανατρέξτε απευθείας στο πακέτο Lucene.Net.Analysis.Common, καθώς το Lucene.Net.Analysis.Common βασίζεται στο πακέτο Lucene.Net για αυτόματη λήψη.

Δημιουργήστε ένα νέο JiebaTokenizer.cs με τον ακόλουθο κώδικα:

Δημιουργήστε ένα νέο JiebaAnalyzer.cs με τον ακόλουθο κώδικα:



Lucene.Net Δημιουργήστε νέα έγγραφα και αναζητήσεις

Προσθέστε δεδομένα από έναν ιστότοπο στο Lucene σε τακτική ή ενεργοποιημένη βάση και το Lucene αποθηκεύει το έγγραφο σε έναν φυσικό δίσκο μέσω του αναλυτή και, στη συνέχεια, καλεί τη διεπαφή αναζήτησης για να το βρει.

Ο κώδικας κλάσης βοήθειας του LuceneHelper έχει ως εξής:



Αποθήκευση αποθήκευσης

Store.YES: Όχι μόνο θα ευρετηριάσει τα δεδομένα, αλλά θα αποθηκεύσει και τα δεδομένα, έτσι ώστε τα αποτελέσματα αναζήτησης να μπορούν να επιστρέψουν πληροφορίες πεδίου.
Store.NO: Μόνο τα δεδομένα θα ευρετηριαστούν και τα δεδομένα δεν θα αποθηκευτούν και τα αποτελέσματα αναζήτησης δεν μπορούν να λάβουν αυτές τις πληροφορίες πεδίου.Εξοικονομεί χώρο στο δίσκο

Οπως φαίνεται παρακάτω:




Τύπος πεδίου πεδίου

Οι τύποι πεδίων σε Lucene.Net είναι Int32Field, Int64Field, SingleField, DoubleField, BinaryDocValuesField, NumericDocValuesField, SortedDocValuesField, StringField, TextField, StoredField, Χρησιμοποιήστε τον κατάλληλο τύπο δεδομένων ανάλογα με την κατάστασή σας.

TextField εναντίον StringField

Το TextField σίγουρα θα λεξικοποιηθεί, το StringField δεν θα εκτελέσει λεξιλογική ανάλυση του περιεχομένου που είναι αποθηκευμένο στο doc, ανατρέξτε στο:Η σύνδεση με υπερσύνδεσμο είναι ορατή.

Εμφάνιση σύνθετης αναζήτησης


Υπάρχουν 6 συνδυασμοί από τα ακόλουθα:

1. ΠΡΕΠΕΙ και ΠΡΕΠΕΙ: Λάβετε τη διασταύρωση διαδοχικών ρητρών ερωτήματος.
2. MUST και MUST_NOT: Υποδεικνύει ότι τα αποτελέσματα αναζήτησης της ρήτρας ερωτήματος που αντιστοιχεί στο MUST_NOT δεν μπορούν να συμπεριληφθούν στα αποτελέσματα του ερωτήματος.
3.ΠΡΕΠΕΙ και MUST_NOT: Όταν χρησιμοποιείται συνεχώς, η συνάρτηση είναι ίδια με το MUST και το MUST_NOT.
4. Όταν το ΠΡΕΠΕΙ και το ΠΡΕΠΕΙ χρησιμοποιούνται μαζί, το αποτέλεσμα είναι το αποτέλεσμα αναζήτησης της ρήτρας ΠΡΕΠΕΙ, αλλά το ΠΡΕΠΕΙ μπορεί να επηρεάσει την ταξινόμηση.
5. ΠΡΕΠΕΙ και ΠΡΕΠΕΙ: Υποδεικνύει τη σχέση μεταξύ "ή" και το τελικό αποτέλεσμα αναζήτησης είναι η ένωση όλων των ρητρών αναζήτησης.
6.MUST_NOT και MUST_NOT: χωρίς νόημα, ανάκτηση χωρίς αποτελέσματα.


Εκτελέστε το έργο

Σε αυτό το σημείο, μπορείτε να ξεκινήσετε το έργο για να προσθέσετε, να ενημερώσετε και να αναζητήσετε τον κώδικα διεπαφής ως εξής:


Τα σφάλματα μπορούν να αναφέρονται ως εξής:

Παρουσιάστηκε μια ανεπίλυτη εξαίρεση κατά την επεξεργασία της αίτησης.
DirectoryNotFoundException: Could not find a part of the path 'C:\Users\itsvse_nuc11\source\repos\DiscuzSearch\DiscuzSearch\bin\Debug\net6.0\Resources\prob_trans.json'.
Microsoft.Win32.SafeHandles.SafeFileHandle.CreateFile(συμβολοσειρά fullPath, λειτουργία FileMode, πρόσβαση FileAccess, κοινόχρηστο στοιχείο FileShare, επιλογές FileOptions)

TypeInitializationException: The type initializer for 'JiebaNet.Segmenter.JiebaSegmenter' threw an exception.

jieba.net Μετά την εγκατάσταση, μπορείτε να δείτε τον κατάλογο Resources στον κατάλογο packages\jieba.NET, ο οποίος περιέχει το λεξικό και άλλα αρχεία δεδομένων που απαιτούνται για την εκτέλεση του jieba.NET και η ευκολότερη μέθοδος διαμόρφωσης είναι να αντιγράψετε ολόκληρο τον κατάλογο Resources στον κατάλογο όπου βρίσκεται η συγκρότηση, έτσι ώστε οι ενσωματωμένες προεπιλεγμένες τιμές διαμόρφωσης να χρησιμοποιηθούν jieba.NET.

C:\Users\%USERPROFILE%\.nuget\packages\jieba.net\0.42.2\Resources

Το JiebaNet πρέπει να προσθέσει έναν φάκελο διαμόρφωσης, ο κώδικας είναι ο εξής:

Η δοκιμή δημιούργησε 500 νέα έγγραφα (που σχετίζονται με την πραγματική μου κατάσταση, μόνο για αναφορά) και ο δίσκος καταλαμβάνει 119 KB, όπως φαίνεται στο παρακάτω σχήμα:



(Τέλος)




Προηγούμενος:Ακολουθήστε τον επίσημο λογαριασμό και λάβετε τον "κωδικό πρόσκλησης" δωρεάν
Επόμενος:Το .NET μετατρέπει τη συμβολοσειρά varbinary της βάσης δεδομένων σε πίνακα byte[]
 Σπιτονοικοκύρης| Δημοσιεύτηκε στις 2023-10-29 18:10:40 |
Το Elasticsearch (ES) αποτυγχάνει να γράψει δεδομένα στη λύση σφάλματος
https://www.itsvse.com/thread-10568-1-1.html

Το Elasticsearch καθαρίζει αυτόματα τα ευρετήρια για να ελευθερώσει χώρο στο δίσκο
https://www.itsvse.com/thread-10273-1-1.html

Το Elasticsearch-7.x χρησιμοποιεί xpack για έλεγχο ταυτότητας ασφαλείας
https://www.itsvse.com/thread-10206-1-1.html

Αναπτύξτε την υπηρεσία Elasticsearch χρησιμοποιώντας το Docker
https://www.itsvse.com/thread-10148-1-1.html

Το Elasticsearch χρησιμοποιεί το elasticdump για τη δημιουργία αντιγράφων ασφαλείας και τη μετεγκατάσταση δεδομένων
https://www.itsvse.com/thread-10143-1-1.html

Εγκαταστήστε την αυτόνομη έκδοση του οδηγού elasticsearch 7.10.2 στα Windows
https://www.itsvse.com/thread-9962-1-1.html

Εισαγωγή στη διαμόρφωση επισήμανσης αναζήτησης Elasticsearch
https://www.itsvse.com/thread-9562-1-1.html

.NET/C# Χρησιμοποιήστε τον εντοπισμό σφαλμάτων Elasticsearch για να προβάλετε πληροφορίες αίτησης και απόκρισης
https://www.itsvse.com/thread-9561-1-1.html

ASP.NET Core Link Trace (5) Τα δεδομένα Jaeger παραμένουν στο elasticsearch
https://www.itsvse.com/thread-9553-1-1.html

Το Elasticsearch (ES) αναπαράγει τον δείκτη κλώνων
https://www.itsvse.com/thread-9545-1-1.html

Κατάσταση συμπλέγματος Elasticsearch(ES): κίτρινη (6 από 7) κατάσταση
https://www.itsvse.com/thread-9544-1-1.html

Εύρυθμη λειτουργία συμπλέγματος Elasticsearch(ES): κόκκινο Ανάλυση αποτυχίας
https://www.itsvse.com/thread-9543-1-1.html

Πληροφορίες γεωγραφικής τοποθεσίας Java στο ElasticSearch (geo_point)
https://www.itsvse.com/thread-6444-1-1.html

Το πεδίο ElasticsearchParseException[πρέπει να είναι είτε [lat], [lon] ή [geohash]]
https://www.itsvse.com/thread-6442-1-1.html

elasticsearch-mappingτύπος πεδίου
https://www.itsvse.com/thread-6436-1-1.html

Elasticsearch:No handler for type [string] declared on field[XX]的解决办法
https://www.itsvse.com/thread-6420-1-1.html

【Πρακτική δράση】Οδηγός εγκατάστασης Kibana για το Elasticsearch
https://www.itsvse.com/thread-6400-1-1.html

Γεωγραφικές συντεταγμένες της οικογένειας προηγμένων χαρακτηριστικών Elasticsearch
https://www.itsvse.com/thread-6399-1-1.html

Τα σύνθετα ερωτήματα ElasticSearch πρέπει, πρέπει, must_not χρησιμοποιούν
https://www.itsvse.com/thread-6334-1-1.html

Το Elasticsearch διαγράφει και ευρετηριάζει όλα τα δεδομένα του εγγράφου
https://www.itsvse.com/thread-6321-1-1.html

[Πραγματική μάχη]. net/c# Καλέστε την αναζήτηση elasticsearch μέσω NEST [με πηγαίο κώδικα]
https://www.itsvse.com/thread-6294-1-1.html

Αιτίες και λύσεις για unassigned_shards Elasticsearch ενός κόμβου
https://www.itsvse.com/thread-6193-1-1.html

Οδηγός για την εγκατάσταση του elasticsearch-analysis-ik στο elasticsearch-6.5.2
https://www.itsvse.com/thread-6191-1-1.html

Εγκαταστήστε το πρόσθετο elasticsearch-6.5.2 elasticsearch-head
https://www.itsvse.com/thread-6190-1-1.html

Εκμάθηση εγκατάστασης και ανάπτυξης του Centos 7 elasticsearch-6.5.2
https://www.itsvse.com/thread-6173-1-1.html

Επιλογή μηχανών αναζήτησης: Elasticsearch vs Solr
https://www.itsvse.com/thread-6168-1-1.html
 Σπιτονοικοκύρης| Δημοσιεύτηκε στις 2023-11-5 21:27:45 |
Αναζήτηση διεύθυνσης δοκιμής:https://www.itsvse.com/blog_xzz.html
Αποκήρυξη:
Όλο το λογισμικό, το υλικό προγραμματισμού ή τα άρθρα που δημοσιεύονται από το Code Farmer Network προορίζονται μόνο για μαθησιακούς και ερευνητικούς σκοπούς. Το παραπάνω περιεχόμενο δεν θα χρησιμοποιηθεί για εμπορικούς ή παράνομους σκοπούς, άλλως οι χρήστες θα υποστούν όλες τις συνέπειες. Οι πληροφορίες σε αυτόν τον ιστότοπο προέρχονται από το Διαδίκτυο και οι διαφορές πνευματικών δικαιωμάτων δεν έχουν καμία σχέση με αυτόν τον ιστότοπο. Πρέπει να διαγράψετε εντελώς το παραπάνω περιεχόμενο από τον υπολογιστή σας εντός 24 ωρών από τη λήψη. Εάν σας αρέσει το πρόγραμμα, υποστηρίξτε γνήσιο λογισμικό, αγοράστε εγγραφή και λάβετε καλύτερες γνήσιες υπηρεσίες. Εάν υπάρχει οποιαδήποτε παραβίαση, επικοινωνήστε μαζί μας μέσω email.

Mail To:help@itsvse.com