Olá, estou fazendo uma pesquisa referente ao lucene .NET, consegui entender a parte teórica, mas não consegui achar nenhuma prática que eu possa ver como o código funciona para a indexação, alguém poderia me ajudar com isso ?
Obrigado
Bom aqui está um exemplo do uso do Lucene Apache
Primeiro você tem que ir no Manager Console e importar a Lucene, digite o seguinte comando Install-package Lucene.net
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Text;
using Lucene.Net.Analysis;
using Lucene.Net.Analysis.Standard;
using Lucene.Net.Documents;
using Lucene.Net.Index;
using Lucene.Net.QueryParsers;
using Lucene.Net.Search;
using Lucene.Net.Store;
using Directory = Lucene.Net.Store.Directory;
using Version = Lucene.Net.Util.Version;
namespace LuceneNetVideo.Demo
{
class Program
{
static void Main(string[] args)
{
Console.WriteLine("Demonstração Lucene.net");
//Cria um documento
var fordFiesta = new Document();
fordFiesta.Add(new Field("Codigo", "1", Field.Store.YES, Field.Index.NOT_ANALYZED));
fordFiesta.Add(new Field("Marca", "Ford", Field.Store.YES, Field.Index.ANALYZED));
fordFiesta.Add(new Field("Modelo", "Fiesta", Field.Store.YES, Field.Index.ANALYZED));
var fordFocus = new Document();
fordFocus.Add(new Field("Codigo", "2", Field.Store.YES, Field.Index.NOT_ANALYZED));
fordFocus.Add(new Field("Marca", "Ford", Field.Store.YES, Field.Index.ANALYZED));
fordFocus.Add(new Field("Modelo", "Focus", Field.Store.YES, Field.Index.ANALYZED));
var vauxhallAstra = new Document();
vauxhallAstra.Add(new Field("Codigo", "3", Field.Store.YES, Field.Index.NOT_ANALYZED));
vauxhallAstra.Add(new Field("Marca", "Vauxhall", Field.Store.YES, Field.Index.ANALYZED));
vauxhallAstra.Add(new Field("Modelo", "Astra", Field.Store.YES, Field.Index.ANALYZED));
;
//Directory Criando o diretorio
// FSDirectory Cria uma fabrica de diretorios
Directory directory = FSDirectory.Open(new DirectoryInfo
(Environment.CurrentDirectory + "\\LuceneIndex"));
// O analisador basicamente transforma o nosso texto em tokens, que são armazenados em nosso índice.
Analyzer analyzer = new StandardAnalyzer(Version.LUCENE_29);
// Escrever o documento para o indice
var writer = new IndexWriter(directory, analyzer, true, IndexWriter.MaxFieldLength.LIMITED);
writer.AddDocument(fordFiesta);
writer.AddDocument(fordFocus);
writer.AddDocument(vauxhallAstra);
writer.Optimize();
writer.Close();
/**
* é definida a indexWriter dizendo para usar o nosso directory'diretorio', e anlyzer
* em seguida chamamos todos os documentos para o indexWriter
*
* otimyze indice de pesquisa
*
*/
// Abrindo o indice de pesquisa
IndexReader indexReader = IndexReader.Open(directory, true);
Searcher indexSearch = new IndexSearcher(indexReader);
/**
* Procura o indice recem criado
*/
// Cria a consulta de pesquisa
var queryParser = new QueryParser(Version.LUCENE_29, "Marca", analyzer);
var query = queryParser.Parse("For*");
//Realizando a Busca
Console.WriteLine("Procurar por: " + query);
TopDocs resultDocs = indexSearch.Search(query, indexReader.MaxDoc());
Console.WriteLine("Resultados encontrados: " + resultDocs.totalHits);
// Mostrando os resultados de pesquisa
var hits = resultDocs.scoreDocs;
foreach (var hit in hits)
{
var documentFromSarch = indexSearch.Doc(hit.doc);
Console.WriteLine(documentFromSarch.Get("Marca") + " " + documentFromSarch.Get("Modelo"));
}
Console.ReadLine();
}
}
}