En neo4j, ¿cómo puedo indexar por fecha y buscar en un rango de fechas. También por momentos, me gustaría buscar entre 8am y 9am en un rango de fechas también.En neo4j, ¿cómo puedo indexar por fecha y buscar en un rango de fechas?
Respuesta
Indique las fechas y horas como marcas de tiempo enteras. Luego puede buscar fácilmente en un índice las fechas entre otras marcas de tiempo. También puede indexar la parte de tiempo de la marca de tiempo por separado como otro entero, lo que le permite consultar tiempos específicos entre fechas determinadas.
Ejemplo: La fecha y la hora de almacenar es "2012-02-05 08:15 AM" Así que en su índice, tienda "marca de tiempo = 1328447700" y "tiempo = 815"
Ahora quiere para consultar el índice de todos los eventos entre 2012-02-01 y 2012-02-10 que ocurrió de 8:00 a.m. a 9:00 a.m. Usted lo hace mediante la consulta del índice para "marca de tiempo> = 1328072400 y marca de tiempo < = 1328936399 y hora> = 800 y la hora < = 900"
La sintaxis exacta para hacer esto depende de cómo se va a conectar a Neo4j (REST o incrustado) y qué lenguaje de programación está utilizando. Pero la idea es la misma en cualquier caso.
¿Puede explicar por qué es una buena idea mezclar la fecha de época y el tiempo 'ISO8601'? Si tuviera que implementarlo iría con '20131124' y' 1130' O '1385251200' y' 41400' (segundos desde la medianoche: '(11 * 60 + 30) * 60'), de esta manera usted puede Concatenar las partes y analizar un formato 'aaaamMMddHHmmss' O hacer' Calendar.setTimeInMillis' con los dos valores agregados cuando se necesita mostrar. – TWiStErRob
@Phil parece haber habido algún progreso en esto, con respecto al TimeTree de GraphAware. ¿Sigue siendo esta la mejor manera de buscar tiempos dentro de cierto rango en neo4j? Esta respuesta parece ser muy, muy ineficiente, porque tendré que convertir cada valor a una marca de tiempo, y luego comparar ese valor con cada otro nodo en el gráfico si no se agrega complejidad adicional de mes/año. – NumenorForLife
Esta es una extensión de la respuesta de Josh Adell. Para facilitar la lectura, Sugiero tener dos date
y time
campos enteros como
date:19970716 (YYYYMMDD)
time:203045000 (HHmmssuuu): last three digits for microseconds.
El tipo de datos puede almacenar hasta int
2147483647
. Si te sientes aventurero, el tipo de datos long
puede almacenar hasta 9223372036854775807
. http://docs.neo4j.org/chunked/stable/graphdb-neo4j-properties.html
inspirado en ISO 8601 timestamps como 1997-07-16T19:20:30.45Z
.
Descargo de responsabilidad: Tengo solo una experiencia mínima con Neo4J.
Eso es milisegundo no micro. – TWiStErRob
Hay una conveniente org.neo4j.index.lucene.LuceneTimeline que hace esto (usando un índice lucene integrado en neo4j).
with Spring data neo4j
public List<Email> getAllEmailData(Date startDate, Date endDate) {
List<Email> list = new ArrayList<Email>();
if (startDate == null || endDate == null) {
return null;
}
long first = ConversionsUtils.convertDateToLong(startDate);
long second = ConversionsUtils.convertDateToLong(endDate);
try {
list = emailRepository.searchAllData(first, second);
// System.out.println("List size " +list.size());
} catch (Exception e) {
e.printStackTrace();
}
return list;
}
@Query(
"START email=node:__types__(className='com.backend.core.neo.entities.Email') "
+ "WHERE email.searchDate > {0} and email.searchDate < {1}"
+ "RETURN email")
List<Email> searchAllData(long startDate, long endDate);
email entity
@NodeEntity
public class Email implements Serializable {
private static final long serialVersionUID = 1L;
public static final String CC = "CC";
public static final String TO = "TO";
@GraphId
private Long id;
@GraphProperty
private Long senderId;
@GraphProperty
private String subject;
@Indexed
// @GraphProperty(propertyType = java.util.Date.class)
private String dateSent;
@Indexed
private long searchDate;
@GraphProperty
private String emailTxt;
@GraphProperty
private String emailHtml;
@GraphProperty
private String emailId;
//mail to
@Fetch
@RelatedTo(elementClass = User.class, type = TO, direction = Direction.OUTGOING)
private Set<User> intoUsers;
//mail shared
@Fetch
@RelatedTo(elementClass = User.class, type = CC, direction = Direction.OUTGOING)
private Set<User> sharedUsers;
- 1. ¿Cómo consultas por fecha y rango de fechas en Mongo
- 2. ¿Cómo puedo buscar el rango de fechas en Rails con fecha variable
- 3. Buscar fechas faltantes para un rango determinado
- 4. Crear un rango de fechas
- 5. Generación de un informe por rango de fechas en raíles
- 6. Grupo MySQL por intervalos en un rango de fechas
- 7. Fecha Rango Superposición con anulable Fechas
- 8. Cómo indexar campo de fecha en lucene
- 9. Java: Rango de fechas mín. Y máx.
- 10. Obteniendo la lista de fechas en un rango en PostgreSQL
- 11. ¿Cómo iterar por el rango de Fechas en Java?
- 12. Encontrar el rango de fechas de la semana por fecha actual en sql?
- 13. jQuery Validate (Rango de fechas)
- 14. ¿Cómo puedo usar Verity para indexar y buscar contenido de base de datos en ColdFusion 9?
- 15. Cómo iterar en un rango de fechas en PL/SQL
- 16. ¿Cómo verificar si una fecha está en un rango determinado?
- 17. Buscar metaetiquetas de fecha en Sharepoint
- 18. Buscar número de días de la semana/fines de semana en un rango de fechas dado
- 19. Determinar si la fecha de hoy se encuentra en un rango de dos fechas en IOS
- 20. ¿Cómo puedo indexar y buscar archivos de texto en Lucene 3.0.2?
- 21. Grupo por rango de fechas en semanas/meses de intervalo
- 22. oráculo rango de fechas
- 23. Resalte las fechas en un rango específico con el marcador de fechas de jQuery
- 24. Cómo indexar y buscar el repositorio de subversión
- 25. Rango de fechas en una matriz, ruby
- 26. selector de rango de fechas similar al selector de rango de fechas de Google Analytics?
- 27. Cómo obtener el número de revisión SVN en cierta fecha o rango de fechas
- 28. Mysql insertar fecha y hora aleatorias en un rango de fecha y hora dado
- 29. ¿Cálculo de superposición de rango de fechas eficiente en python?
- 30. ¿Cómo determinar si un rango de fechas ocurre en cualquier momento dentro de otro rango de fechas?
Por cierto, ¿por qué no utilizar Cipher? – Bozho
¿Cómo me va a ayudar el índice de cifrar? – Phil