私は Lucene.Net 2.9.2 を使用しています。カスタム トークナイザーを作成する必要があると思いますが、明らかな何かが欠けている場合に備えて確認したいと考えています。
ドキュメントは、タイトル、キーワード、コンテンツに加えて、作成者、日付などのメタデータで構成され、それぞれがフィールドとして保存されます。ドキュメントはソフトウェア技術ドキュメントであり、タイトル、キーワード、および/またはコンテンツに「.Net」、「C++」、「C#」などの語句が含まれる場合があります。
キーワード フィールドには KeywordAnalyzer を使用し、タイトルとコンテンツには StandardAnalyzer を使用しています。ドキュメントが非常に長くなる可能性があるため、StopWords と LowerCase などが必要です。
たとえば、「C#」を検索するだけでなく、「CSharp」、「C#.Net」なども認識したいので、検索用のシノニム カスタム フィルターも作成しました。トークナイザーは、「C#」から「#」を既に削除しています。または C++ の '++' であるため、たとえば 'C' 言語リファレンスと混同される可能性があります。
私の考えでは、現在のトークンがキーワード フレーズの一部であるか、その類義語の一部であるかに応じて、トークン化を分岐する必要があるタイトルとコンテンツをインデックス化する必要があります。
それが最善のアプローチですか?事前に多くの感謝:)