2017-10-17 66 views
0

在我的應用程序中,我想允許用戶搜索帶有單詞的廣告。所以我想讓所有包含所有單詞的廣告都在列表中。例如,如果他搜索:本田公民2017,我想獲得所有這個詞沒有秩序的所有廣告,他可以得到廣告與2001年民事本田,本田2001年民調。 到目前爲止,我試着用春數據倉庫: 接口:搜索字符串彈簧數據列表MySQL

Page<Annonce> findByTitreContaining(String titres ,Pageable page); 

控制器:

String title; 
annonces=annoncedao.findByTitreIn(title, page); 

但是這一次給我的只有誰包含字符串

回答

1

一個包含搜索是廣告您的查詢參數包含在%中。在你的情況下,你搜索%Honda civic 2017%。意味着查詢字符串之前和之後的所有內容都可以是任何地方,但必須與Honda civic 2017完全匹配。

您的用例更多是全文搜索。主要通過NoSql數據庫完成。 Spring提供了一些開箱即用的功能。例如Apache SolrElasticsearch

你的用例的解決方法可能是你分割你的查詢字符串,併爲每個拆分字符串做一個自己的包含搜索。之後將結果設置回您的返回對象。但正如我所說,這更像是一種解決方法。

我還沒有用過hibernate搜索。所以不知道它是否合適,但可能有幫助。 Add full-text search to your application with Hibernate Search