Scrivi la tua classe analizzatore personalizzati simile a SynonymAnalyzer
in Lucene.Net – Custom Synonym Analyzer. L'override di TokenStream
potrebbe risolvere questo problema eseguendo il pipelining dello stream utilizzando WhitespaceTokenizer
e LowerCaseFilter
.
Ricordare che l'indicizzatore e il ricercatore devono utilizzare lo stesso analizzatore.
Aggiornamento: Gestione di più delimitati da virgole parole chiave
Se avete solo bisogno di gestire le parole chiave unspaced delimitati da virgole per ricerca, non indicizzare allora si potrebbe convertire l'espressione di ricerca expr
come di seguito.
expr = expr.Replace(',', ' ');
Poi passano expr
al QueryParser
. Se vuoi supportare altri delimitatori come ';' si potrebbe fare in questo modo:
var terms = expr.Split(new char[] { ',', ';'});
expr = String.Join(" ", terms);
Ma è anche necessario verificare la presenza di una frase un'espressione come "Sybase, C# ,. net, Oracle" (espressione include la citazione "caratteri) che non deve essere convertito (il utente è alla ricerca di una corrispondenza esatta):
expr = expr.Trim();
if (!(expr.StartsWith("\"") && expr.EndsWith("\"")))
{
expr = expr.Replace(',', ' ');
}
l'espressione potrebbe includere sia una frase e alcune parole chiave, in questo modo:
"sybase,c#,.net,oracle" server,c#,.net,sybase
allora avete bisogno di analizzare e tradurre l'espressione di ricerca a questo:
"sybase,c#,.net,oracle" server c# .net sybase
Se hai bisogno anche di gestire le parole chiave unspaced delimitati da virgole per l'indicizzazione allora avete bisogno di analizzare il testo per parole chiave unspaced delimitati da virgole e memorizzarli in un campo distinto per esempio. Keywords
(che deve essere associato all'analizzatore personalizzato).Allora la vostra gestore di ricerca ha bisogno di convertire un'espressione di ricerca come questa:
server,c#,.net,sybase
a questo:
Keywords:server Keywords:c# Keywords:.net, Keywords:sybase
o più semplicemente:
Keywords:(server, c#, .net, sybase)
è il codice sorgente del dominio? O sono solo esempi? – phani
@phani quelli sono solo esempi – Kumar