List of usage examples for com.liferay.portal.kernel.search Field getValues
public String[] getValues()
From source file:com.rknowsys.portal.search.elastic.ElasticsearchIndexWriter.java
License:Open Source License
private String getElasticsearchDocument(Document document) throws IOException { XContentBuilder xContentBuilder = XContentFactory.jsonBuilder(); xContentBuilder.startObject();/* w w w . j av a 2 s. c o m*/ Map<String, Field> fields = document.getFields(); for (Field field : fields.values()) { String name = field.getName(); if (!field.isLocalized()) { if (field.isNumeric()) { Class clazz = field.getNumericClass(); if (clazz.equals(Double.class)) { double[] values = GetterUtil.getDoubleValues(field.getValues()); if (values.length > 1) { xContentBuilder.field(name, values); } else { xContentBuilder.field(name, values[0]); } } else if (clazz.equals(Float.class)) { float[] values = GetterUtil.getFloatValues(field.getValues()); if (values.length > 1) { xContentBuilder.field(name, values); } else { xContentBuilder.field(name, values[0]); } } else if (clazz.equals(Integer.class)) { int[] values = GetterUtil.getIntegerValues(field.getValues()); if (values.length > 1) { xContentBuilder.field(name, values); } else { xContentBuilder.field(name, values[0]); } } else { long[] values = GetterUtil.getLongValues(field.getValues()); if (values.length > 1) { xContentBuilder.field(name, values); } else { xContentBuilder.field(name, values[0]); } } } else { if (field.getValues().length > 1) { xContentBuilder.field(name, field.getValues()); } else { xContentBuilder.field(name, field.getValue()); } } } else { Map<Locale, String> localizedValues = field.getLocalizedValues(); for (Map.Entry<Locale, String> entry : localizedValues.entrySet()) { String value = entry.getValue(); if (Validator.isNull(value)) { continue; } Locale locale = entry.getKey(); String languageId = LocaleUtil.toLanguageId(locale); String defaultLanguageId = LocaleUtil.toLanguageId(LocaleUtil.getDefault()); if (languageId.equals(defaultLanguageId)) { xContentBuilder.field(name, value.trim()); } String localizedName = DocumentImpl.getLocalizedName(LocaleUtil.fromLanguageId(languageId), name); xContentBuilder.field(localizedName, value.trim()); } } } xContentBuilder.endObject(); return xContentBuilder.string(); }
From source file:com.vportal.portal.search.HitsOpenSearchImpl.java
License:Open Source License
public String search(HttpServletRequest request, long groupId, long userId, String keywords, int startPage, int itemsPerPage, String format) throws SearchException { try {/*w w w .j a v a 2 s. c om*/ ThemeDisplay themeDisplay = (ThemeDisplay) request.getAttribute(WebKeys.THEME_DISPLAY); int start = (startPage * itemsPerPage) - itemsPerPage; int end = startPage * itemsPerPage; SearchContext searchContext = SearchContextFactory.getInstance(request); searchContext.setGroupIds(new long[] { groupId }); searchContext.setEnd(end); searchContext.setKeywords(keywords); searchContext.setScopeStrict(false); searchContext.setStart(start); searchContext.setUserId(userId); addSearchAttributes(themeDisplay.getCompanyId(), searchContext, keywords); Portlet portlet = PortletLocalServiceUtil.getPortletById(themeDisplay.getCompanyId(), getPortletId()); Indexer indexer = portlet.getIndexerInstance(); Hits results = indexer.search(searchContext); String[] queryTerms = results.getQueryTerms(); int total = results.getLength(); Object[] values = addSearchResults(queryTerms, keywords, startPage, itemsPerPage, total, start, getTitle(keywords), getSearchPath(), format, themeDisplay); com.liferay.portal.kernel.xml.Document doc = (com.liferay.portal.kernel.xml.Document) values[0]; Element root = (Element) values[1]; for (int i = 0; i < results.getDocs().length; i++) { Document result = results.doc(i); String portletId = result.get(Field.PORTLET_ID); String snippet = results.snippet(i); long resultGroupId = GetterUtil.getLong(result.get(Field.GROUP_ID)); PortletURL portletURL = getPortletURL(request, portletId, resultGroupId); Summary summary = getSummary(indexer, result, snippet, portletURL); String title = summary.getTitle(); String url = getURL(themeDisplay, resultGroupId, result, portletURL); Date modifedDate = result.getDate(Field.MODIFIED); String content = summary.getContent(); String[] tags = new String[0]; Field assetTagNamesField = result.getFields().get(Field.ASSET_TAG_NAMES); if (assetTagNamesField != null) { tags = assetTagNamesField.getValues(); } double ratings = 0.0; String entryClassName = result.get(Field.ENTRY_CLASS_NAME); long entryClassPK = GetterUtil.getLong(result.get(Field.ENTRY_CLASS_PK)); if ((Validator.isNotNull(entryClassName)) && (entryClassPK > 0)) { RatingsStats stats = RatingsStatsLocalServiceUtil.getStats(entryClassName, entryClassPK); ratings = stats.getTotalScore(); } double score = results.score(i); addSearchResult(root, resultGroupId, entryClassName, entryClassPK, title, url, modifedDate, content, tags, ratings, score, format); } if (_log.isDebugEnabled()) { _log.debug("Return\n" + doc.asXML()); } return doc.asXML(); } catch (Exception e) { throw new SearchException(e); } }
From source file:org.rsc.liferay.solr.SolrIndexWriter.java
License:Open Source License
protected SolrInputDocument getSolrInputDocument(Document document) { SolrInputDocument solrInputDocument = new SolrInputDocument(); Collection<Field> fields = document.getFields().values(); for (Field field : fields) { String name = field.getName(); float boost = field.getBoost(); if (ArrayUtil.contains(Field.UNSCORED_FIELD_NAMES, name)) { boost = _UNSCORED_FIELDS_BOOST; }/*w w w . j ava 2s . c o m*/ if (!field.isLocalized()) { for (String value : field.getValues()) { if (Validator.isNull(value)) { continue; } solrInputDocument.addField(name, value.trim(), boost); } } else { Map<Locale, String> localizedValues = field.getLocalizedValues(); for (Map.Entry<Locale, String> entry : localizedValues.entrySet()) { String value = entry.getValue(); if (Validator.isNull(value)) { continue; } Locale locale = entry.getKey(); String languageId = LocaleUtil.toLanguageId(locale); String defaultLanguageId = LocaleUtil.toLanguageId(LocaleUtil.getDefault()); if (languageId.equals(defaultLanguageId)) { solrInputDocument.addField(name, value.trim(), boost); } String localizedName = DocumentImpl.getLocalizedName(locale, name); solrInputDocument.addField(localizedName, value.trim(), boost); } } } return solrInputDocument; }