Olá pessoal, vocês que já utilizaram o lucene. Estou fazendo FuzzyQuery e minha dúvida é a seguinte: Eu quero que o lucene ao invés de me devolver o documento que econtrou a palavra me devolva qual foi a palavra encontrada, por exemplo:
procuro = Brazil
documento = “Brasil é um país de todos”
com esse código:
Analyzer analyzer = new StandardAnalyzer(Version.LUCENE_CURRENT);
Directory directory = new RAMDirectory();
IndexWriter iwriter = new IndexWriter(directory, analyzer, true, new IndexWriter.MaxFieldLength(25000));
Document doc;
for (int i = 0; i < list.size(); i++) {
doc = new Document();
doc.add(new Field("fieldname", list.get(i), Field.Store.YES, Field.Index.ANALYZED));
iwriter.addDocument(doc);
}
iwriter.close();
IndexSearcher isearcher = new IndexSearcher(directory);
Term term = new Term("fieldname", s);
FuzzyQuery query = new FuzzyQuery(term, 0.75f, 0);// quanto menor a semelhança menor o float
// 0.7 é apropriado para este caso
TopScoreDocCollector collector = TopScoreDocCollector.create(10, true);
isearcher.search(query, collector);
ScoreDoc[] hits = collector.topDocs().scoreDocs;
for (int i = 0; i < hits.length; i++) {
Document hitDoc = isearcher.doc(hits[i].doc);
listr.add(hitDoc.get("fieldname"));
}
isearcher.close();
directory.close();
for (int i = 0 ; i < listr.size() ; i++ ) {
resp.add(listr.get(i));//melhorar método para fazer busca dentro de busca
}
return resp;
O lucene me devolve o documento inteiro ou seja “Brasil é um país de todos”, mas eu queria só a palavra “Brasil”.