Lucene e Personagens Especiais
Estou usando o Lucene.Net 2.0 para indexar alguns campos de uma tabela de banco de dados. Um dos campos é um campo 'Nome' que permite caracteres especiais. Quando executo uma pesquisa, ele não encontra meu documento que contém um termo com caracteres especiais.
Eu indexo meu campo como tal:
Directory DALDirectory = FSDirectory.GetDirectory(@"C:\Indexes\Name", false);
Analyzer analyzer = new StandardAnalyzer();
IndexWriter indexWriter = new IndexWriter(DALDirectory, analyzer, true, IndexWriter.MaxFieldLength.UNLIMITED);
Document doc = new Document();
doc.Add(new Field("Name", "Test (Test)", Field.Store.YES, Field.Index.TOKENIZED));
indexWriter.AddDocument(doc);
indexWriter.Optimize();
indexWriter.Close();
E eu procuro fazer o seguinte:
value = value.Trim().ToLower();
value = QueryParser.Escape(value);
Query searchQuery = new TermQuery(new Term(field, value));
Searcher searcher = new IndexSearcher(DALDirectory);
TopDocCollector collector = new TopDocCollector(searcher.MaxDoc());
searcher.Search(searchQuery, collector);
ScoreDoc[] hits = collector.TopDocs().scoreDocs;
Se eu fizer uma pesquisa por campo como 'Nome' e valor como 'Teste', ele encontrará o documento. Se eu realizar a mesma pesquisa que 'Nome' e o valor que 'Teste (Teste)', ele não encontrará o documento.
Ainda mais estranho, se eu remover a linha QueryParser.Escape, procurar uma GUID (que, é claro, contém hífens), ela encontrará documentos onde o valor da GUID corresponde, mas realizando a mesma pesquisa com o valor de 'Teste (Teste) 'ainda não produz resultados.
Não tenho certeza do que estou fazendo de errado. Estou usando o método QueryParser.Escape para escapar dos caracteres especiais e estou armazenando o campo e pesquisando pelos exemplos do Lucene.Net.
Alguma ideia?