Colocar Resposta 
 
Avaliação do Tópico:
  • 0 votos - 0 Média
  • 1
  • 2
  • 3
  • 4
  • 5
[Ajuda] Lucene.net
18-02-2013, 16:45
Mensagem: #1
[Ajuda] Lucene.net
Boa tarde.

Estou a criar um projeto em que uso Lucene.
Tenho uma pasta que tem os ficheiros que serão indexados.

A minha questão é que cada vez que adiciono um ficheiro à pasta, queria que o indice fosse atualizado, ou seja, fosse incrementado o ficheiro novo ao indice, e não criar um indice novo.

Ao usar o true ele cria um indice novo

IndexWriter w = new IndexWriter(directory, analyzer, true, IndexWriter.MaxFieldLength.UNLIMITED);

Se tirar o true ele não cria novo mas indexa todos os ficheiros que estão na pasta.
O que eu queria era que incrementasse os ficheiros novos.

Alguém pode ajudar?
Procurar todas as mensagens deste utilizador
Citar esta mensagem numa resposta
21-02-2013, 12:04
Mensagem: #2
RE: [Ajuda] Lucene.net
Olá.
Há vários scripts na net que te explicam como podes actualizar os teus índices, em vez de criar índice novos. Um dos problemas quando fiz um projecto em Lucene, foi que ele fazia a indexação dos que já estava, e isso duplicava-me o número de resultados.

Eis a minha função de indexação:

public static void Index() throws IOException{
// 1. create the index
StandardAnalyzer analyzer = new StandardAnalyzer(Version.LUCENE_40);
Directory dir = FSDirectory.open(new File("index"));
final File doc = new File(finalFile_PATH);

IndexWriterConfig iwc = new IndexWriterConfig(Version.LUCENE_40, analyzer);

if (create) {
// Create a new index in the directory, removing any
// previously indexed documents:
iwc.setOpenMode(OpenMode.CREATE);
} else {
// Add new documents to an existing index:
iwc.setOpenMode(OpenMode.CREATE_OR_APPEND);
}

IndexWriter writer = new IndexWriter(dir, iwc);

indexDocs(writer, doc);

writer.close();
}

a variável "create" é um boolean que tu deves chamar consoante queres actualizar ou criar índices novos. No entanto, como a minha quantidade de dados não era assim tão grande, e não quis perder tempo com isso, pura e simplesmente deixei essa variável sempre com false e a cada vez que esta função era chamada, a pasta com os índices era apagada.

Ou seja, cada vez que chamavas esta função, ele apagava os índices que estavam lá dentro, e criava novos.

Cumprimentos
Procurar todas as mensagens deste utilizador
Citar esta mensagem numa resposta
25-02-2013, 17:13
Mensagem: #3
RE: [Ajuda] Lucene.net
Viva!

Obrigado pela resposta mas entretanto já tinha arranjado solução para isso. A minha solução foi guardar a data da ultima atualização do indice, depois quando fizesse o update ele verifica os ficheiros que foram adicionados depois dessa data e indexa-os, os outros não indexa. Assim apenas indexa os ficheiros novos.

Este projeto é para trabalhar com bastante informação e será para correr num servidor para estar sempre "on".

Estou agora a tentar costumizar um Analyzer, se souberes alguma coisa disso avisa. Estou a tentar que o Analyzer analise sinónimos mas anda complicado.
Procurar todas as mensagens deste utilizador
Citar esta mensagem numa resposta
01-03-2013, 10:55
Mensagem: #4
RE: [Ajuda] Lucene.net
Boas.

Entretanto surgiu me outra duvida. Já alguém trabalhou com Lucene.net e faceted search?
Ando à procura mas o que encontro é tudo muito vago sem uma explicação clara.

Queria fazer a atualização de facets automática é possível?
Exemplo:

pesquiso por "carro", aparecem me os resultados e os facets "Opel", "Seat" e "Renault". Depois escolho "Opel" e aparecem me todos os resultados de Opel e os facets "Corsa", "Astra", ....

Isto é possível?
Procurar todas as mensagens deste utilizador
Citar esta mensagem numa resposta
Colocar Resposta 


Saltar Fórum:


Utilizadores a ver este tópico: 1 Visitante(s)