我正在尝试从Liferay实现自定义搜索portlet的搜索功能。问题是我只得到一个结果,即默认用户liferay供应(测试),尽管我也有其他用户。下面是我用来实现搜索的代码片段。我正在使用liferay 7.0。
<%
String keywords = ParamUtil.getString(request, "keywords");
SearchContext searchContext = SearchContextFactory
.getInstance(request);
searchContext.setKeywords(keywords);
searchContext.setAttribute("paginationType", "more");
searchContext.setStart(0);
searchContext.setEnd(10);
Indexer indexer = IndexerRegistryUtil.getIndexer(User.class);
Hits hits = indexer.search(searchContext);
List<User> entries = new ArrayList<User>();
for (int i = 0; i < hits.getDocs().length; i++) {
Document doc = hits.doc(i);
System.out.println(hits.doc(i).getUID());
long entryId = GetterUtil
.getLong(doc.get(Field.ENTRY_CLASS_PK));
User entry = null;
try {
entry = UserLocalServiceUtil.getUser(entryId);
} catch (PortalException pe) {
//_log.error(pe.getLocalizedMessage());
} catch (SystemException se) {
//_log.error(se.getLocalizedMessage());
}
entries.add(entry);
}
List<User> users = UserLocalServiceUtil.getUsers(0,1000000);
Map<String, String> userMap = new HashMap<String, String>();
for (User userr : users) {
userMap.put(Long.toString(userr.getUserId()), userr.getFullName());
}%>
很明显,我正在尝试搜索用户。正如我之前所说,我只能搜索测试用户(由liferay提供)而不是所有用户。 任何帮助都会很棒!