2010-02-26 122 views
1

有什麼方法可以用類似於SQL LIKE語句的過濾器來查詢GAE數據存儲嗎?例如,如果一個類有一個字符串字段,並且我想查找所有在該字符串中具有特定關鍵字的類,那我該怎麼做? 它看起來像JDOQL的匹配()不工作...我錯過了什麼?Google App Engine和SQL LIKE

任何評論,鏈接或代碼片段,歡迎

+2

相關:http://stackoverflow.com/questions/47786/google-app-engine-is-it-possible-to-do-a-gql-like-query – 2010-02-26 09:54:09

回答

2

由於GAE/J文檔說,BigTable的不具備這樣的原生支持。您可以將JDOQL String.matches用於「something%」(即startsWith)。這就是全部。否則,請在內存中評估它。

+0

感謝您的回覆。 startsWith()的壞處在於它不能用於其他字段上的不等式運算符,所以我將不得不在內存中進行評估。 – 2010-03-01 14:47:23

1

如果您有很多要檢查的項目,您希望避免加載它們。最好的方法可能是將輸入分解爲寫入時間。如果您只搜索整個單詞,那很容易

例如,「Hello world」變成「Hello」,「world」 - 只需將它們都添加到多值屬性中即可。如果你有很多文本,你想避免加載多值屬性,因爲你只需要索引查找。您可以通過創建「關係索引實體」來實現此目的 - 有關詳細信息,請參閱bret slatkins Google IO Talk。

您可能還想將輸入分解爲3個字符,4個字符等字符串或干擾詞語 - 可能是使用lucene詞幹分析器。

+0

您可以在我的博客中找到關於Java和Python的Relation Index Entity示例: http://novyden.blogspot.com/2011/02/efficient-keyword-search-with-relation.html http:// novyden。 blogspot.com/2011/09/efficient-keyword-search-with-relation.html – topchef 2011-09-23 19:53:24