在neo4j中,如何按日期進行索引並在日期範圍內進行搜索。同樣的時間,我想在日期範圍內在上午8點和上午9點之間進行搜索。在neo4j中,如何按日期進行索引並在日期範圍內進行搜索?
回答
將日期和時間索引爲整數時間戳。然後,您可以輕鬆地在索引中搜索其他時間戳之間的日期。您還可以將時間戳的時間部分分別編入另一個整數,以便查詢給定日期之間的特定時間。
例子: 的日期和時間存儲爲「2012-02-05 8:15 AM」 所以在你的索引,存儲「時間戳= 1328447700」和「時間= 815」
現在,你想查詢2012年2月1日至2012年2月10日期間上午8:00至上午9:00發生的所有事件的索引。你這樣做,通過查詢索引 「時間戳> = 1328072400和時間戳< = 1328936399和時間> = 800和時間< = 900」
這樣做的確切語法取決於你如何連接到的Neo4j(REST或嵌入式)以及您正在使用的編程語言。但是這個想法在任何情況下都是一樣的。
你能解釋爲什麼混合時代日期和ISO8601時間是個好主意嗎?如果我要實施它,我會選擇'20131124'和'1130'或'1385251200'和'41400'(午夜以後的秒數:'(11 * 60 + 30)* 60'),這樣您可以連接部件並解析'yyyyMMddHHmmss'格式,或者在需要顯示時將兩個值相加在一起的'Calendar.setTimeInMillis'。 – TWiStErRob 2013-11-24 11:36:03
@Phil關於GraphAware的TimeTree,似乎有一些進展。這仍然是在neo4j中搜索特定範圍內時間的最佳方法嗎?這個答案似乎非常非常低效,因爲我必須將每個值轉換爲時間戳,然後將該值與圖中的每個其他節點進行比較,如果未添加額外的月/年複雜度。 – NumenorForLife 2015-06-12 01:21:45
這是Josh Adell的答案的擴展。爲了增強可讀性,我建議有兩個date
和time
整數領域,如
date:19970716 (YYYYMMDD)
time:203045000 (HHmmssuuu): last three digits for microseconds.
的int
數據類型可以存儲高達2147483647
。如果你感覺冒險,long
數據類型可以存儲高達9223372036854775807
。 http://docs.neo4j.org/chunked/stable/graphdb-neo4j-properties.html
從ISO 8601 timestamps靈感像1997-07-16T19:20:30.45Z
。
免責聲明:我對Neo4J的使用經驗很少。
毫秒不微。 – TWiStErRob 2013-11-24 10:59:38
有一個方便的org.neo4j.index.lucene.LuceneTimeline這樣做(在neo4j中使用集成的lucene索引)。
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. 按日期搜索範圍
- 2. 在Excel中搜索日期範圍內的日期
- 3. Yii2日期範圍搜索
- 4. IMAP搜索 - 日期範圍
- 5. Excel:在兩個日期範圍內搜索特定日期
- 6. 在LINQ中搜索日期範圍
- 7. 如何在cq頁面上按日期查詢進行搜索
- 8. 日期索引 - 長範圍搜索所有行,小不
- 9. Bing Azure API按日期範圍搜索
- 10. 如何索引數值字段並在Lucene.Net中按範圍進行搜索?
- 11. 如何使用ActiveRecord模型在日期範圍之間進行搜索?
- 12. Amazon DynamoDB:如何搜索日期範圍?
- 13. 在日期之間進行搜索如何在jtable中顯示
- 14. 日期範圍在索引視圖
- 15. mysql搜索範圍內的日期(日期)
- 16. 日期範圍之間進行選擇,在這些日期
- 17. Neo4j:給定日期範圍內如何查詢中間日期
- 18. jqGrid搜索中的日期範圍
- 19. 如何在PGSQL中按日期搜索?
- 20. 如何在2個日期和時間之間進行搜索?
- 21. 如何在兩個日期之間進行搜索
- 22. 如何在日期之間使用Reddit JSON API進行搜索?
- 23. JS進行驗證日期範圍
- 24. 如何在帶有可變日期的Rails中搜索日期範圍
- 25. SilverStripe。在ModelAdmin中按日期範圍搜索
- 26. 在cloudant lucene中搜索日期範圍內的篩選?
- 27. SharePoint搜索查找日期範圍
- 28. mongodb日期範圍搜索問題
- 29. jQuery DataTable日期範圍搜索
- 30. 驗證日期範圍搜索
順便說一句,爲什麼不使用密碼? – Bozho 2012-02-25 08:02:30
密碼怎麼幫我索引? – Phil 2012-02-26 08:49:05