correspondência de padrões na pesquisa elástica?
Continuando do meu anteriorpostar, Alterei a consulta de acordo com as instruções de femtoRgonpostar alguns caracteres e âncoras não são suportados pela pesquisa elástica.
Estou procurando o caminho para corresponder ao padrão como "xxx-xx-xxxx" para procurar documentos com números de segurança social usandoelastic search
.
Suponhamos que, em documentos indexados, eu gostaria de encontrar todos esses documentos que tenham números de segurança social que correspondam ao padrão "xxx-xx-xxxx".
Código de amostra para indexar o documento:
InputStream is = null;
try {
is = new FileInputStream("/home/admin/Downloads/20121221.doc");
ContentHandler contenthandler = new BodyContentHandler();
Metadata metadata = new Metadata();
Parser parser = new AutoDetectParser();
parser.parse(is, contenthandler, metadata, new ParseContext());
}
catch (Exception e) {
e.printStackTrace();
}
finally {
if (is != null) is.close();
}
Código de amostra para pesquisa
QueryBuilder queryBuilderFullText = null;
queryBuilderFullText = QueryBuilders.filteredQuery(QueryBuilders.matchAllQuery(),
FilterBuilders.regexpFilter("_all", "[0-9]{3}?[0-9]{2}?[0-9]{4}"));
SearchRequestBuilder requestBuilder;
requestBuilder = client.prepareSearch()
.setIndices(getDomainIndexId(project))
.setTypes(getProjectTypeId(project))
.setQuery(queryBuilderFullText);
SearchResponse response = requestBuilder.execute().actionGet(ES_TIMEOUT_MS);
SearchHits hits = response.getHits();
if (hits.getTotalHits() > 0) {
System.out.println(hits.getTotalHits());
} else {
return 0l;
}
Estou recebendo hits por seguir:
45-555-5462
457-55-5462
4578-55-5462
457-55-54623
457-55-5462-23
Porém, conforme meu requisito, ele deve retornar apenas "457-55-5462" (com base no padrão correspondente "xxx-xx-xxxx").
Por favor ajude.