前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >xwiki开发者指南-为一个一分钟创建App应用程序编写自定义SOLR搜索

xwiki开发者指南-为一个一分钟创建App应用程序编写自定义SOLR搜索

作者头像
lovelife110
发布2021-01-14 14:34:57
5220
发布2021-01-14 14:34:57
举报
文章被收录于专栏:爱生活爱编程

本教程介绍了如何为一个一分钟创建App应用程序(即AWM)编写自定义SOLR搜索。在这个例子中,我们使用了"支出报表"应用程序

目标是建立一个只会返回支出报表的搜索功能,并在facet(面板)使用支出报表的一些字段。在这个例子中,我们将为facet添加支出报表类的状态、组织、货币、客户和用户字段。

此外,我们将建立一个“List Facet”,允许显示StaticList以及DBList字段。此facet的代码可复用于此类型的任何字段。

为SOLR搜索配置代码

我们定制solrConfig对象的"filterQuery","facetFields"和"facetDisplayers"字段。其他配置选项是默认的。

  • filterQuery: 我们限制DOCUMENT类型的item和包含一个ERCode.ERClass类。
  • facetFields: 我们为ERCode.ERCodeClass类的属性添加一些额外的面板字段。我们还删除从默认配置不需要的某些字段。
  • facetDisplays: 我们声明用于每个字段的facet代码。

创建包含以下代码的ExpenseReport.Search页面:

{{velocity output="false"}} #set ($solrConfig = {   'filterQuery': [     'type:DOCUMENT',     'class:ERCode.ERCodeClass'   ],   'facetFields': [     'property.ERCode.ERCodeClass.status_string',     'property.ERCode.ERCodeClass.organisation_string',     'property.ERCode.ERCodeClass.currency_string',     'property.ERCode.ERCodeClass.user_string',     'author',     'creator',     'date',     'creationdate'   ],   'facetDisplayers': {     'type': 'Main.SolrTypeFacet',     'wiki': 'Main.SolrWikiFacet',     'locale': 'Main.SolrLocaleFacet',     'author': 'Main.SolrUserFacet',     'creator': 'Main.SolrUserFacet',     'attauthor': 'Main.SolrUserFacet',     'date': 'Main.SolrDateFacet',     'creationdate': 'Main.SolrDateFacet',     'attdate': 'Main.SolrDateFacet',     'class': 'Main.SolrClassFacet',     'attsize': 'Main.SolrFileSizeFacet',     'mimetype': 'Main.SolrMediaTypeFacet',     'property.ERCode.ERCodeClass.status_string' : 'ExpenseReport.ListFacet',     'property.ERCode.ERCodeClass.organisation_string' : 'ExpenseReport.ListFacet',     'property.ERCode.ERCodeClass.currency_string' : 'ExpenseReport.ListFacet',     'property.ERCode.ERCodeClass.client_string' : 'ExpenseReport.ListFacet',     'property.ERCode.ERCodeClass.user_string' : 'Main.SolrUserFacet'   } }) {{/velocity}} {{include reference="Main.SolrSearch" /}}

List字段的facet代码

我们需要为list字段添加facet代码,因为XWiki是默认不提供的。在ExpenseReport.ListFacet添加以下代码:

{{velocity}} #macro (displaySearchFacetValue_list $value)  #set($class = $xwiki.getDocument($pclass).getxWikiClass())  #set($prop = $class.get($propName))  ## here we convert the raw value in a nicely displayed value $prop.getMapValues().get($value).value #end #if ($facetValues)  ## here we extract the class name and field name so that we can avoid hardcoding it  #set($index1 = $facetField.name.lastIndexOf("."))  #set($index2 = $facetField.name.lastIndexOf("_"))  #set($pclass = $facetField.name.substring(0, $index1).substring(9))  #set($index1 = $index1 + 1)  #set($propName = $facetField.name.substring($index1, $index2))   {{html}}  <ul class="${propName}">     #displaySearchFacetValuesLimited($facetValues {} 'displaySearchFacetValue_list')  </ul>   {{/html}} #end {{/velocity}}

效果展示

下面是我们定制Solr搜索的效果(ExpenseReport.Search页面):

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2019/04/10 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 为SOLR搜索配置代码
  • List字段的facet代码
  • 效果展示
相关产品与服务
腾讯云 BI
腾讯云 BI(Business Intelligence,BI)提供从数据源接入、数据建模到数据可视化分析全流程的BI能力,帮助经营者快速获取决策数据依据。系统采用敏捷自助式设计,使用者仅需通过简单拖拽即可完成原本复杂的报表开发过程,并支持报表的分享、推送等企业协作场景。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档