Re: [J2EE] Spring MVC 實現搜尋文章功能 (Lucene..)

看板java作者時間9年前 (2014/08/13 19:37), 編輯推噓0(005)
留言5則, 2人參與, 最新討論串6/6 (看更多)
大大,我想再請教一下,為什麼我照著範例做了一個repository和model 然後也依照controller的程式碼加了一段 @Resource private NewsRepository newsRepository; 我只是想跑跑不同的資料而已,像是這樣 //這裡@Document我不確定我的type這樣寫是不是對的,我找不到您哪裡有寫type的位置 @Document(indexName="news",type="opinion") public class News { private String oid ; private String articleid ; private String content ; private String link ; private String timestamp ; private String subject ; public String getArticleid() { return articleid; } 後面省略.... 所有的方法都沒有太大修改 都是依照您的範例,只是改一些對應變數名稱 讓網頁能秀出我自己的資料而已,但是我run起來的時候都會碰到這個錯誤 org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'homeController': Injection of resource dependencies failed; nested exception is org.springframework.beans.factory .BeanCreationException: Error creating bean with name 'newsRepository': Invocation of init method failed; nested exception is java.lang .NullPointerException....不太知道怎麼解,不知道是不是跟這段有關 @PostConstruct private void initData() { List<IndexQuery> indexQueries = new ArrayList<IndexQuery>(); LoremIpsum lorem = new LoremIpsum(); for (int i = MINCOUNT; i < MAXCOUNT; i++) { String documentId = UUID.randomUUID().toString(); Book book = new Book(); book.setId(documentId); book.setName(lorem.randomWord()); book.setMessage(lorem.sentence()); book.setPrice(RandomUtils.nextDouble()); IndexQuery indexQuery = new IndexQueryBuilder().withId(book.getId()).withObject(book).build(); indexQueries.add(indexQuery); } // bulk index elasticsearchTemplate.bulkIndex(indexQueries); } 但是我想這裡應該只是您用來隨機產生範例資料的功能而已,應該沒有關係吧? 我檢查過好幾次了,很多@標註我都有加上去,沒有漏掉,實在無解才來求救...謝謝! ※ 引述《phstudy (study)》之銘言: : 範例是使用Transport client, 所以跟設定http的連線加密應該沒關係 : Spring Data Elasticsearch也是使用Elasticsearch Java API去作查詢的 : 驗證的話,可以在spring-data-elasticsearch-1.0.0.RELEASE.jar裡面下中斷點 : 中斷點可下在類別:org.springframework.data.elasticsearch.core.\ : ElasticsearchTemplate的queryForPage() method : trace一下就知道Spring Data Elasticsearch內部是怎麼運作的了 :D : ※ 引述《ek0424 ()》之銘言: : : 非常謝謝你~另外想請教一下,若elasticsearch本身有設定http的連線加密的話, : : 設定檔那邊要怎麼改呢?還有就是BookRepository.java這段,是繼承Spring Data : : 寫好的部分嘛,因為我只有寫過用一般的Elasticsearch Java API去撈資料,像 : : 類似下面的code,因為我在您的範例裡面並沒有看到類似的code出現,所以很好奇 : : 是否用了spring data這些基本的方法都是會包在特別的spring data api裡面? : : QueryBuilder query = QueryBuilders.matchQuery("text", "security"); : : SearchResponse response = client.prepareSearch("social") : : .setTypes("twitter").setQuery(query) : : .setScroll(new TimeValue(6000)).setFrom(0).setSize(100) : : .execute() : : .actionGet(); : : 不好意思問題有點多,非常感謝~ -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 220.137.3.182 ※ 文章網址: http://www.ptt.cc/bbs/java/M.1407929870.A.3D8.html

08/13 20:00, , 1F
應該是package問題, 看一下elasticsearch-context.xml
08/13 20:00, 1F

08/13 21:25, , 2F
package都設定repository那個,java檔也都放在正確的地方耶
08/13 21:25, 2F

08/16 20:34, , 3F
有人知道如果要同時搜尋多個index,怎麼做嗎?
08/16 20:34, 3F

08/16 20:36, , 4F
因為我實作了自訂repository,但是他還是要我設定@Document
08/16 20:36, 4F

08/16 20:37, , 5F
但是只能設定@Documet(indexName="myindex")不能設多個啊
08/16 20:37, 5F
文章代碼(AID): #1JwquEFO (java)
討論串 (同標題文章)
文章代碼(AID): #1JwquEFO (java)