Estou estudando o lucene e estou com uma dúvida com relação a indexação de arquivo texto. Tenho um arquivo texto onde a primeira linha tem o nome dos campos e o restante das linhas tem os dados. A dúvida é como faço para indexar esse arquivo txt com esses campos? Preciso indexar cada campo (nome, cpf, endereco, etc) pois terei varias consultas: por cpf, por cpf e nome, cpf ou nome, etc. Agradeço quem puder ajudar com essa dúvida.
Porque não cria um tipo de CSV? Com ponto e virgula ( ?? Então você consegue quebrar essas informações e utilizar da forma que quiser.
[quote=hronovais]Estou estudando o lucene e estou com uma dúvida com relação a indexação de arquivo texto. Tenho um arquivo texto onde a primeira linha tem o nome dos campos e o restante das linhas tem os dados. A dúvida é como faço para indexar esse arquivo txt com esses campos? Preciso indexar cada campo (nome, cpf, endereco, etc) pois terei varias consultas: por cpf, por cpf e nome, cpf ou nome, etc. Agradeço quem puder ajudar com essa dúvida.
[/quote]
Olá therodrigoagostin, na verdade ele já está dessa forma, só que com a extensão .txt. A primeira linha tem o header, e as proximas linhas os dados.
A minha dificuldade está em pegar o header e em seguida os dados para ir adicionando linha por linha para fazer a indexação. Será que você ou alguém
pode dar uma dica de como fazer isso? O ideal é que eu tenha essa funcionalidade para vários layouts diferentes, podendo variar a quantidade de
colunas.
Estou sem java sem nada aqui, afinal não trabalho com isso, mas vou tentar te dar uma luz.
faz o seguinte layout, o header sempre vai ser o primeiro do layout…
coloque tudo q precisa na linha, da forma que possa usar qq layout tipo:
header;nome;endereco;telefone;bairro;cidade;estado
header;nome;;telefone;bairro;cidade;estado;cep
no segundo caso você não tem o endereço, porém tem o cep!
Não sei se ficaria da forma que quer, mas ja utilizei isso pra criar arquivos de SPED.
[quote=hronovais]Olá therodrigoagostin, na verdade ele já está dessa forma, só que com a extensão .txt. A primeira linha tem o header, e as proximas linhas os dados.
A minha dificuldade está em pegar o header e em seguida os dados para ir adicionando linha por linha para fazer a indexação. Será que você ou alguém
pode dar uma dica de como fazer isso? O ideal é que eu tenha essa funcionalidade para vários layouts diferentes, podendo variar a quantidade de
colunas.[/quote]
Resolvido:
[code]
Analyzer analyzer = new StandardAnalyzer(Version.LUCENE_36);
Directory indexDir = FSDirectory.open(new File(“indexDir”));
IndexWriterConfig iwc = new IndexWriterConfig(Version.LUCENE_36, analyzer);
IndexWriter iw = new IndexWriter(indexDir, iwc);
try {
BufferedReader in = new BufferedReader(new FileReader(file_name));
String str;
String[] header = in.readLine().split(";");
String[] linha = null;
while ((str = in.readLine()) != null) {
linha = str.split(";");
Document doc = new Document();
for (int l = 0; l < header.length; l++) {
doc.add(new Field(header[l], linha[l], Field.Store.YES, Field.Index.ANALYZED));
}
iw.addDocument(doc);
}
in.close();
System.out.println("Finalizando a leitura do arquivo.");
} catch (IOException e) {
}