Эта статья является зеркальной статьёй машинного перевода, пожалуйста, нажмите здесь, чтобы перейти к оригиналу.

Вид: 4068|Ответ: 2

[Источник] [Практический бой] Используйте Lucene.Net + Jieba.NET для создания лёгкого поиска на сайте

[Скопировать ссылку]
Опубликовано 29.10.2023 18:05:43 | | | |
Требования: полнотекстовый поиск на сайте — это распространённая функция, и она часто применяется на её основеElasticSearchSolrВнедрение и разработка, а теперь выпущено два новых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: поток, полученный после обработки токенайзера. Этот поток хранит различную информацию о сегментации слов, которую можно эффективно получить через 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 не будет выполнять лексический анализ содержимого, хранящегося в doc, см. следующее:Вход по гиперссылке виден.

Поиск по составным встречам


Существует 6 комбинаций следующих вариантов:

1. ОБЯЗАТЕЛЬНО и ДОЛЖНО: Получить пересечение последовательных запросов.
2. MUST и MUST_NOT: Указывает, что результаты поиска по клаузе запроса, соответствующей MUST_NOT, не могут быть включены в результаты запроса.
3.SHOULD и MUST_NOT: При непрерывном использовании функция совпадает с MUST и MUST_NOT.
4. Когда SHOULD и MUST используются вместе, результатом является результат поиска по клаузе MUST, но SHOULD может влиять на сортировку.
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 Access, FileShare share, опции 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 КБ, как показано на рисунке ниже:



(Конец)




Предыдущий:Подпишитесь на официальный аккаунт и получите «код приглашения» бесплатно
Следующий:.NET преобразует варбинарную строку базы данных в массив байтов[]
 Хозяин| Опубликовано 29.10.2023 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

Установите самостоятельную версию tutorial 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-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

Tutorial по установке и развертыванию 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