Adaptivist Scriptrunner CQL
Asked by Victor Prasad:

Hello,

I am looking to create a user macro that allows this cql query

Skype AND (spacekey:SVCCAT or spacekey:ICS or spacekey:APPCAT)

But have the search term variable, so instead of typing 'Skype', and term can be used, and it will return results based on the 3 spaces I have listed.

Search Box gives a choice of 1 of the 3 spaces per search, but not all.

Can the CQL custom scriptrunner option do this?

Thoughts?

Thanks,

V


Answers:
author: Victor Prasad
body: Did I forget to say

**WOW!!!!**


author: Victor Prasad
body: oh wow!

Thank you Thank you Thank you!

I have never made a macro before...


author: Victor Prasad
body: Oh, i see!!!

Learned something new!

Thanks again!


author: Davin Studer
body: Sorry, I forgot that the search results macro doesn't use CQL. It uses Lucene search syntax. Lucene, to my knowledge, does not have anything in the search syntax to specify the order.


author: Victor Prasad
body: Hi Davin,

That makes sense, however when I added the order by, I get zero results:

Found 0 search result(s) for (skype) AND (spacekey:SVCCAT OR spacekey:ICS OR spacekey:APPCAT) order by lastmodified desc.

This is the macro content when I get zero results:

## Developed by: Davin Studer

## Date created: 06/26/2020

## @noparams

\<form class="aui" method="GET" action=""\>

\<input id="q" name="q" type="text" class="text" placeholder="" /\> \<button class="button"\>Search\</button\>

\</form\>

#set($q = $req.getParameter('q'))

#if($q \&\& $q != "")

\<p\>

\<ac:structured-macro ac:name="search" ac:schema-version="1"\>

\<ac:parameter ac:name="maxLimit"\>100000\</ac:parameter\>

\<ac:parameter ac:name="query"\>($q) AND (spacekey:SVCCAT OR spacekey:ICS OR spacekey:APPCAT) order by lastmodified desc\</ac:parameter\>

\</ac:structured-macro\>

\</p\>

#end

But this works fine

## Developed by: Davin Studer

## Date created: 06/26/2020

## @noparams

\<form class="aui" method="GET" action=""\>

\<input id="q" name="q" type="text" class="text" placeholder="" /\> \<button class="button"\>Search\</button\>

\</form\>

#set($q = $req.getParameter('q'))

#if($q \&\& $q != "")

\<p\>

\<ac:structured-macro ac:name="search" ac:schema-version="1"\>

\<ac:parameter ac:name="maxLimit"\>100000\</ac:parameter\>

\<ac:parameter ac:name="query"\>($q) AND (spacekey:SVCCAT OR spacekey:ICS OR spacekey:APPCAT)\</ac:parameter\>

\</ac:structured-macro\>

\</p\>

#end

Which worked:

*Found 67 search result(s) for (skype) AND (spacekey:SVCCAT OR spacekey:ICS OR spacekey:APPCAT).*

Would I have to restart the Confluence Service? Clear caches?

I do appreciate you help and expertise - thank for responding!

V


author: Davin Studer
body: Try this for descending ...

```
<ac:parameter ac:name="query">($q) AND (spacekey:SVCCAT OR spacekey:ICS OR spacekey:APPCAT) order by lastmodified desc</ac:parameter>
```

... or this for ascending.

```
<ac:parameter ac:name="query">($q) AND (spacekey:SVCCAT OR spacekey:ICS OR spacekey:APPCAT) order by lastmodified asc</ac:parameter>
```

<https://developer.atlassian.com/server/confluence/advanced-searching-using-cql/#order-by>


author: Victor Prasad
body: The search sorts by relevance, can I change that by date modified? not sure of the syntax


author: Victor Prasad
body: It really did, super handy!

Is there a library or site of what others have done the Adaptivist ScriptRunner. I am sure people have done crazy things!

Thanks again!


author: Davin Studer
body: Glad it helped.


author: Davin Studer
body: This is a pretty simple way to do it by wrapping the search results macro.

**Macro Name:**   
custom_search

**Macro Title:**   
Custom Search

**Macro Body Processing:**   
No macro body

**Template:**

```
## Developed by: Davin Studer## Date created: 06/26/2020## @noparams<form class="aui" method="GET" action="">    <input id="q" name="q" type="text" class="text" placeholder="" /> <button class="button">Search</button></form>#set($q = $req.getParameter('q'))#if($q && $q != "")<p>  <ac:structured-macro ac:name="search" ac:schema-version="1">    <ac:parameter ac:name="maxLimit">100000</ac:parameter>    <ac:parameter ac:name="query">($q) AND (spacekey:SVCCAT OR spacekey:ICS OR spacekey:APPCAT)</ac:parameter>  </ac:structured-macro></p>#end
```


Tags: confluence-server

search

server