小さな検索エンジンの実装を考えています。ただし、検索エンジンが単語のセグメンテーションをどのように行うかはわかりません。
私の考えは次のとおりです。
- 人気のある単語を含む単語辞書を作成する
- HTML ドキュメントの各文について、単語をスペースで区切る
- 線形検索を実行して、単語の一部が辞書にあるかどうかを確認します。もしそうなら、これらはそのページのキーワードです。
- キーワードを DB テーブルにします。対応するすべてのキーワード テーブルに URL を保存する
では、「私は彼女をダウンタウン近くの地元のレストランで夕食に招待しました」という文があるとしましょう。停留所以外の単語は次のとおりです: {招待された、夕食、地元、レストラン、ダウンタウン}
辞書には {invite、dinner、restaurant} という単語しか含まれていません
問題は次のとおりです。
- 辞書外の単語をどう扱うか?(例: ダウンタウン)
- 過去形や複数形などの扱い方は?特定のプレフィックスを持つすべての単語をまとめて保存する必要がありますか? (例えば、「invite」には「invites、invited、invitation ...」が含まれます) では、「back」や「backwards」などの単語はどうでしょうか。
- 「地元のレストラン」などのクエリを処理するにはどうすればよいですか? 「ローカル」と「レストラン」の結果を単純に組み合わせるのは適切な解決策とは思えませんが、「ローカル レストラン」を別のキーワード テーブルとして保存すると、より多くの重複が発生し、単語の分割が困難になる可能性があります。
- 私の考えよりも良い方法はありますか?
どんなコメントでも大歓迎です。ありがとう!