2010-06-02 68 views
2

有什麼方法可以讓JPQL匹配類似的字符串?Java:JPQL search -similar- strings

按類似於我的意思是:

  • 包含:搜索字符串匹配項實體
  • 不區分大小寫
  • 小mispellings的字符串中發現的:例如「AROW」匹配「箭頭」

我懷疑前兩個將是容易的,但是,我將不勝感激幫助,最後一個

謝謝

回答

4

前兩個確實是很容易做到使用LIKELOWERUPPER關鍵字。最後一個很難做到,因爲它要求你定義兩個字符串的相似程度。在JPQL中沒有基本的關鍵字可以輕鬆完成這項工作(據我所知)。您可以使用像Levenshtein distance這樣的算法來確定是否存在小的誤差(距離爲1或2)。這不是在JPQL中完成的,儘管...

+1

可能會猜測對於3)您應該使用支持這種功能的數據庫並將其作爲本地查詢運行。這將使你獲得比JPQL更多的功能,同時打破可移植性 – 2010-06-02 09:10:16

+0

@seanizer:哪些數據庫支持此功能? – bguiz 2010-06-02 13:13:10

+1

postgres支持它:http://www.postgresql.org/docs/8.3/static/fuzzystrmatch.html在大多數情況下,它可以使用函數/存儲過程來實現。例如在Oracle中:http://richmurnane.blogspot.com/2006/02/levenshtein-distance-algorithm-oracle.html mysql:http://codejanitor.com/wp/2007/02/10/levenshtein-distance-as- a-mysql-stored-function/mssql:http://www.bigresource.com/MS_SQL-Levenshtein-Edit-Distance-Algorithm-zRMNNbbv.html – 2010-06-02 14:09:24