この記事は機械翻訳のミラー記事です。元の記事にジャンプするにはこちらをクリックしてください。

眺める: 4068|答える: 2

[出典] [実戦] Lucene.Net+Jieba.NET を使って軽量な現場内検索を構築

[リンクをコピー]
2023年10月29日 18:05:43に投稿 | | | |
要件:サイトでの全文検索は一般的に使われる機能であり、それに基づいて一般的に使われていますエラスティックサーチソル展開と開発、そして現在、2つの新しいものがリリースされましたRedisSearchメイリサーチ検索エンジンの場合、最初の2つはより重いですが、後の2つは最初の2つほど重くはありませんが、依存するサービスを展開する必要があります。この記事では Lucene.Net+Jieba.NET を使って軽量なオンサイト検索を構築します。

Lucene.Net

Lucene.Net はLuceneの.NET移植であり、オープンソースの全文検索エンジン開発キットです。つまり、完全な全文検索エンジンではなく、完全なクエリエンジンとインデックスエンジンを提供する全文検索エンジンアーキテクチャです。

敷地:ハイパーリンクのログインが見えます。
GitHubアドレス:ハイパーリンクのログインが見えます。

Jieba.NET

Jieba.NET は中国語の分詞「jieba」です。 .NET バージョン(C# 実装)。 中国語テキストの単語分割、品詞注釈、キーワード抽出などの機能が可能で、カスタム辞書もサポートしています。

GitHubアドレス:ハイパーリンクのログインが見えます。

まずはレンダリングを見てみましょう。




アナライザーのカスタマイズ

Lucene TokenStreamにおけるAnalyzer、TokenStream、TokenFilterTokenStream:トークナイザー処理後に取得されるストリームです。 このストリームはワードセグメンテーションに関する様々な情報を保存しており、TokenStreamを通じて効果的に取得できます。 以下はファイルストリームをTokenStreamに変換するプロセスです。まず、トークナイザーを使って単語をセグメント化します。トークナイザーごとに異なるトークンジアーがあります。トークジアーが分離された後、TokenFilterで単語に分割されたデータをストップワードなどフィルターでフィルタリングします。 フィルタリング後、すべてのデータをTokenStreamにまとめます。

参考:

ハイパーリンクのログインが見えます。
ハイパーリンクのログインが見えます。
ハイパーリンクのログインが見えます。


Jieba.NET に基づいてLuceneアナライザーをカスタマイズするには、最初の参照は以下の通りです。



Lucene.Net.Analysis.Commonパッケージを直接参照してください。Lucene.Net.Analysis.Commonは Lucene.Net パッケージに依存して自動ダウンロードを行います。

以下のコードで新しいJiebaTokenizer.csを作成します:

以下のコードで新しいJiebaAnalyzer.csを作成します:



Lucene.Net 新しいドキュメントの作成と検索

ウェブサイトから定期的にまたはトリガーされたデータを追加すれば、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(文字列 fullPath、FileMode mode、FileAccess access、FileShare share、FileOptions options)

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

jieba.net インストール後、packages\jieba.NET ディレクトリのResourcesディレクトリが確認できます。そこには jieba.NET を実行するために必要な辞書やその他のデータファイルが含まれています。最も簡単な設定方法は、アセンブリがあるディレクトリにResourcesディレクトリ全体をコピーし、組み込みのデフォルト設定値を jieba.NET 使うことです。

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

JiebaNetは設定フォルダを追加する必要があり、コードは以下の通りです:

このテストで500件の新しいドキュメントが作成されました(参考までに私の実際の状況に関連しています)。ディスクの占有面積は119KBで、下の図に示されています。



(終わり)




先の:公式アカウントをフォローして「招待コード」を無料で入手してください
次に:.NETはデータベースのvarbinary文字列をバイト[]配列に変換します
 地主| 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

Dockerを使ってElasticsearchサービスを展開します
https://www.itsvse.com/thread-10148-1-1.html

Elasticsearchはelasticdumpを使ってデータのバックアップと移行を行います
https://www.itsvse.com/thread-10143-1-1.html

Windowsでelasticsearch 7.10.2チュートリアルのスタンドアロン版をインストールしてください
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 コアリンクトレース(5) イェーガーデータはelasticsearchに永続化します
https://www.itsvse.com/thread-9553-1-1.html

Elasticsearch(ES)はクローンインデックスを再現します
https://www.itsvse.com/thread-9545-1-1.html

Elasticsearch(ES)クラスターの健康状態:黄色(7つ中6つ)ステータス
https://www.itsvse.com/thread-9544-1-1.html

Elasticsearch(ES)クラスターの健康状態:赤 故障解析
https://www.itsvse.com/thread-9543-1-1.html

ElasticSearch(geo_point)におけるJavaジオロケーション情報
https://www.itsvse.com/thread-6444-1-1.html

ElasticsearchParseException[フィールドは[緯度]、[lon]、または[geohash]のいずれかでなければなりません]
https://www.itsvse.com/thread-6442-1-1.html

弾力探索-マッピング場型
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

【実践的行動】Elasticsearch用Kibanaインストールチュートリアル
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# NESTを経由したelasticsearch検索を呼び出せる[ソースコード付き]
https://www.itsvse.com/thread-6294-1-1.html

単一ノードのエラスティックサーチunassigned_shards原因と解決策
https://www.itsvse.com/thread-6193-1-1.html

elasticsearch-6.5.2におけるelasticsearch-analysis-ikのインストールチュートリアル
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時間以内に上記の内容を完全にパソコンから削除してください。 もしこのプログラムを気に入ったら、正規のソフトウェアを支持し、登録を購入し、より良い本物のサービスを受けてください。 もし侵害があれば、メールでご連絡ください。

Mail To:help@itsvse.com