中山大学の検索エンジン
Yat-Search Engine は、複数のファイルの読み込み、正確なクエリ、ファジー クエリ、および正規表現クエリをサポートする効率的なテキスト検索エンジンです。このプロジェクトは、永続ストレージとロギング機能を備えた、高速かつ正確なテキスト検索ソリューションを提供することを目的としており、中国語インターフェイスをサポートしています。
中国語の検索は「あいまい検索」オプションを使用してのみ完了でき、末尾に「.」記号が必要であることに注意してください。
このプロジェクトは学習とコミュニケーションのみを目的としており、商業目的で使用しないでください。オリジナルの作者は、このプロジェクトの使用から生じるいかなる結果についても責任を負いません。
現在のバージョンはまだ開発中のため、一部の機能はまだ完全には実装されていない可能性があります。コードの貢献や提案は大歓迎です。
中山大学コンピュータサイエンス学部「データ構造とアルゴリズム」コースの2024年秋学期の主な課題。
現在のバージョン: v1.4.0
└──Yat-Search-Engine
├── CMakeLists.txt
├── LICENSE
├── dat
│ └── index.dat
├── include
│ ├── RegexSearch.h
│ └── TextSearchEngine.h
├── log
│ └── query_log.txt
├── logo_pic
│ ├── logo.txt
│ └── logo_out.txt
├── readme.md
├── source-text
│ ├── bible.txt
│ ├── text1.txt
│ ├── text2.txt
│ └── otherfile...
└── src
├── RegexSearch.cpp
├── TextSearchEngine.cpp
└── main.cpp
ハッシュ テーブルにはクエリ v1.0.0 が含まれています
CustomHash
を実装し、 TextSearchEngine
でunordered_map
使用してハッシュ関数を結合し、クエリのパフォーマンスを最適化します。ファイル読み込みv1.0.1
複数ファイルのサポート(完了) v1.1.0
main.cpp
変更すると、システムはインデックス作成のためにこれらのファイルを 1 つずつロードします。正規表現のサポート(完了) v1.1.1
RegexSearch
クラスを追加し、C++ <regex>
ライブラリを使用して正規表現に基づくクエリ関数を実装し、対応するオプションをメイン メニューに追加します。正確なクエリ(完了) v1.1.2
exactQuery
メソッドを実装し、 unordered_map
を通じて完全に一致するキーワードを効率的に検索し、一致結果を表示します。コンパイラーがエラーを報告する方法を模倣するなど、視覚的な検索結果(完成) v1.2.0
^
を使用して文内のキーワードの位置をマークし、可読性を高めます。無制限のクエリ、終了ボタン(完了) v1.2.1
新しいハッシュ関数(完成) v1.3.1
CustomHash
関数を最適化し、ハッシュ競合処理の効率を改善して、クエリのパフォーマンスをさらに向上させます。中国語のサポート(完了) v1.4.0
パフォーマンスの最適化と前処理(完了) v1.3.1
ユーザーインターフェース(完成) v1.2.2
永続ストレージ(完了) v1.3.0
ログ機能、クエリ履歴の記録など(完成) v1.3.2
query_log.txt
に記録されます。中国語出力のサポート(完了) v1.4.0
コンパイル方法をmingWからcmakeに変更(完了) v1.4.0
すべてのファイルを追加するには all を入力します(完了) v1.4.0
Windows環境では中国語の文字化けが発生する場合がありますので、必ずLinux環境で実行してください。作業ディレクトリに入り、プロジェクトをローカルにクローン作成します。
git clone https://github.com/ouyangyipeng/Yat-Search-Engine.git
cd Yat-Search-Engine
CMake と、 g++
やclang++
などの C++17 対応コンパイラーがインストールされていることを確認してください。 cmakelists.txt ファイルにはコンパイル オプションが設定されています。次のコマンドを実行するだけでプロジェクトをコンパイルできます。デフォルトのコンパイラは/usr/bin/g++
にあることに注意してください。他のコンパイラを使用する必要がある場合は、CMakeLists.txt ファイルを変更してください。
mkdir build # 假如没有build文件夹
cd build
cmake ..
cmake --build .
./YatSearchEngine
検索するテキスト ファイルをソース テキスト フォルダーに配置し、ファイルが .txt 形式で保存されていることを確認します。
プログラムを開始します。実行可能ファイルを実行すると、プログラムはようこそインターフェイスを表示し、Enter キーを押して続行するように求めるプロンプトを表示します。
ファイルのロード: プロンプトに従ってロードするファイルを入力し、毎回ファイル名を入力し (.txt で終わる必要があります)、「done」と入力してファイルの選択を完了します。
クエリの種類を選択します:
正確なクエリを実行するには 1 を入力します。
ファジークエリの場合は 2 を入力します。
正規表現クエリの場合は 3 を入力します。
4 を入力してプログラムを終了します。
クエリ内容を入力: 選択したクエリ タイプに応じて、対応するキーワードまたは正規表現を入力します。
結果の表示: クエリ結果には、一致する文とその位置マーカーが表示されます。
プログラムを終了する: 終了オプションを選択すると、プログラムは終了する前にインデックスを保存し、ログを記録します。
クエリ操作ログは query_log.txt ファイルに保存され、ユーザーはテキスト エディターを使用して履歴クエリ レコードと操作ログを表示できます。
コードの貢献や提案は大歓迎です。プル リクエストを送信するか、問題でフィードバックをお寄せください。
このプロジェクトは MIT ライセンスに基づいてライセンスされています。詳細については、LICENSE ファイルを参照してください。