Solrでハイライト取得しようとしてもnullになる
Solrエンジンを使って、検索システムを作ろうとしています。
参考書見ても、調べても、ハイライトのスニペットがどうしても取得できない
ソースコードは以下の通り
//solrに投げるクエリーの設定 SolrQuery query = new SolrQuery(); String searchword = "検索用の用語"; query.setQuery("+content:" + searchword); query.addFilterQuery("+is_title:" + 0); query.setRows(1000); //ハイライト query.setHighlight(true); query.setHighlightFragsize(100); query.setHighlightSnippets(1); //Solrへ投げるクエリ― QueryResponse response = server.query(query); //responseを受け取る List<maniDto> resultmaniList = response.getBeans(maniDto.class); SolrDocumentList list =response.getResults(); //ハイライト出力 for(SolrDocument sd : list){ String id = (String) sd.getFieldValue("id"); if(response.getHighlighting().get(id)!=null){ System.out.println(response.getHighlighting().get(id).get("content")); } } highLight.get("content");
これ、contentフィールドを取得してるんだけど、nullになるんですよねー
で、調べ回った結果
query.setParam("hl.fl", "content");
これを入れ忘れていたのだ…。
query.setQueryで値を入れればそれでいいと思っていたんだ…。
勘違いはnullのもと。
これで晴れてスニペットを取得できた!