Lucene indexar txt

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 (:wink: ?? 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) {
    }