Ця стаття є дзеркальною статтею машинного перекладу, будь ласка, натисніть тут, щоб перейти до оригінальної статті.

Вид: 4068|Відповідь: 2

[Джерело] [Практичний бій] Використовуйте Lucene.Net + Jieba.NET для створення легкого пошуку на сайті

[Копіювати посилання]
Опубліковано 2023-10-29 18:05:43 | | | |
Вимоги: Повнотекстовий пошук на сайті — це поширена функція, і вона часто застосовується на її основіElasticSearchSolrРозгортання та розробка, а тепер випущено два новихRedisSearchMeiliSearchПерші два важчі, хоча останні два не такі важкі, як перші два, але все одно потребують залежних сервісів, у цій статті використовується Lucene.Net + Jieba.NET для створення легкого пошуку на сайті.

Lucene.Net

Lucene.Net є .NET-портом Lucene і відкритим набором для розробки повнотекстових пошукових систем, тобто це не повнотекстовий пошуковий двигун, а повноцінна архітектура пошукової системи, яка забезпечує повноцінний пошуковий двигун і індексацію.

Сайт:Вхід за гіперпосиланням видно.
Адреса GitHub:Вхід за гіперпосиланням видно.

Jieba.NET

Jieba.NET — це дієприкметник китайської цзеба. Версія .NET (реалізація на C#). Він може виконувати такі функції, як сегментація слів, анотація частин мови, вилучення ключових слів тощо для китайського тексту, а також підтримує власні словники.

Адреса GitHub:Вхід за гіперпосиланням видно.

Спершу розглянемо візуалізації:




Налаштуйте аналізатор

Analyzer, TokenStream, Tokenizer, TokenFilterTokenStream у Lucene TokenStream: Потік, отриманий після обробки токенайзера. Цей потік зберігає різноманітну інформацію про сегментацію слів, яку можна ефективно отримати через TokenStream. Нижче наведено процес конвертації файлового потоку у TokenStream. Спочатку використовуйте токенайзер для сегментації слів, різні токенізатори мають різних токензієрів, після розділення токензієра відфільтруйте дані, які були розділені на слова, через 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 не виконуватиме лексичний аналіз вмісту, збереженого в документі, див. також:Вхід за гіперпосиланням видно.

Пошук складених зустрічей


Існує 6 комбінацій наступного:

1. MUST і MUST: Отримати перетин послідовних запитів.
2. MUST і MUST_NOT: Вказує, що результати пошуку за запитом, що відповідає MUST_NOT, не можуть бути включені до результатів запиту.
3.SHOULD і MUST_NOT: При безперервному використанні функція є такою ж, як MUST і MUST_NOT.
4. Коли SHOULD і MUST використовуються разом, результатом є результат пошуку за клаузулою MUST, але SHOULD може впливати на сортування.
5. SHOULD і SHOULD: Вказує на зв'язок між «або», а кінцевий результат пошуку — це об'єднання всіх пошукових положень.
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 (string fullPath, режим FileMode, FileAccess Access, FileShare share, FileOptions options)

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 КБ, як показано на рисунку нижче:



(Кінець)




Попередній:Підпишіться на офіційний акаунт і отримайте «код запрошення» безкоштовно
Наступний:.NET перетворює варбінарний рядок бази даних у масив байтів[]
 Орендодавець| Опубліковано 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) Дані Єгера зберігаються в 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-mappingfield тип
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

【Practical Action】Kibana installation tutorial for 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

Встановіть plugin 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 проти 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 годин після завантаження. Якщо вам подобається програма, будь ласка, підтримуйте справжнє програмне забезпечення, купуйте реєстрацію та отримайте кращі справжні послуги. Якщо є будь-яке порушення, будь ласка, зв'яжіться з нами електронною поштою.

Mail To:help@itsvse.com