Lucene.Net – Custom Synonym AnalyzerSynonymAnalyzer
のように、独自のカスタム アナライザー クラスを記述します。のオーバーライドは、andを使用してストリームをパイプライン化することでこれを解決できます。TokenStream
WhitespaceTokenizer
LowerCaseFilter
インデクサーとサーチャーは同じアナライザーを使用する必要があることに注意してください。
更新: 複数のコンマ区切りキーワードの処理
インデックス作成ではなく、スペースなしのカンマ区切りのキーワードのみを処理する必要がある場合は、次のように検索式expr
を変換できます。
expr = expr.Replace(',', ' ');
次に、 に渡しexpr
ますQueryParser
。「;」などの他の区切り文字をサポートしたい場合 あなたはこのようにすることができます:
var terms = expr.Split(new char[] { ',', ';'} );
expr = String.Join(" ", terms);
ただし、"sybase,c#,.net,oracle" (式には引用符 " chars が含まれる) などの変換すべきでない句式 (ユーザーは完全一致を探している) を確認する必要もあります。
expr = expr.Trim();
if (!(expr.StartsWith("\"") && expr.EndsWith("\"")))
{
expr = expr.Replace(',', ' ');
}
式には、次のようにフレーズといくつかのキーワードの両方が含まれる場合があります。
"sybase,c#,.net,oracle" server,c#,.net,sybase
次に、検索式を解析して次のように変換する必要があります。
"sybase,c#,.net,oracle" server c# .net sybase
インデックス作成のためにスペースなしのカンマ区切りのキーワードも処理する必要がある場合は、スペースなしのカンマ区切りのキーワードのテキストを解析し、それらを個別のフィールドに格納する必要があります。Keywords
(カスタム アナライザーに関連付ける必要があります)。次に、検索ハンドラーは次のように検索式を変換する必要があります。
server,c#,.net,sybase
これに:
Keywords:server Keywords:c# Keywords:.net, Keywords:sybase
またはもっと簡単に:
Keywords:(server, c#, .net, sybase)