Faceted Search Query Xml - MasterQuery Element Example
The Faceted Search Query Builder macro (se:facetedsearchquerybuilder) contains a lot of local instance vipers. Usually, local instance vipers are used within the macro itself, e.g. formatting, but in this case the local instance vipers should only be used within a query xml definition.
This example shows a masterquery element from a query xml definition in which some of the available local instance vipers are used.
| Smartsite SXML |
|
|---|---|
<masterquery connection="" defaultsources="content">
<query><![CDATA[
SELECT {this.selectfields()}
FROM {this.tableorview()} c
JOIN (
SELECT {this.rankingfields()}
FROM (
{this.searchquery(default="SELECT Nr, 0 As SearchRank, 1 AS BaseSearch
FROM "+this.searchgroupviewname())}
) rq
GROUP BY rq.Nr
) vt2 ON c.Nr=vt2.Nr
JOIN {this.searchgroupviewname()} sgv WITH (NOEXPAND) ON c.Nr = sgv.Nr
{this.joinclause(default="")}
{this.resultchanneljoins("c",default="")}
WHERE {this.whereclause(default="(1=1)")}
AND vt2.BaseSearch = 1
AND {security.getbrowsablewhere('c',100)}
]]>
</query>
<fields rem="value for this.selectfields(), used to display the query results"><![CDATA[
ROW_NUMBER() OVER (ORDER BY {this.orderby(default="searchrank DESC")}, c.Nr) AS rownum,
c.Nr AS Nr, CAST(vt2.searchrank AS INT) AS searchrank, c.contenttype, c.author,
c.ModDate AS ModDate, c.Title AS Title,
SUBSTRING(sgv.QueryData,0,16000) AS Abstract, ft.FileExtension,
{this.resultchannelcode(default="NULL")} AS ChannelCode
]]>
</fields>
<joins rem="clause used in search results query"><![CDATA[
JOIN FileTypes ft ON c.FileType=ft.Nr
]]>
</joins>
<rankingfields rem="value for this.rankingfields()">
nr, SUM(searchrank) AS searchrank, COUNT(BaseSearch) AS BaseSearch
</rankingfields>
<paging rem="paging query for search result"><![CDATA[
SELECT * FROM (
{this.searchquery(default="SELECT Nr, 0 As SearchRank, 1 AS BaseSearch
FROM "+this.searchgroupviewname())}
) x
WHERE rownum BETWEEN ?:lowerbound AND ?:upperbound
]]>
</paging>
</masterquery>
|
|