%TOC%
%STARTINCLUDE%
---# TWiki Formatted Search Results
_Inline search feature allows flexible formatting of search result_
The =[[TWikiVariables#VarSEARCH][%SEARCH{...}%]]= variable documented in TWikiVariables has a fixed format for the search result, that is, a table consisting of topic names and topic summaries. Use the =format="..."= parameter to specify a customized format of the search result. The string of the format parameter is typically a bullet list or table row containing variables (such as =%SEARCH{ "food" format="| $topic | $summary |" }%=).
---++ Syntax
Two parameters can be used to specify a customized search result:
1. =header="..."= parameter
Use the header parameter to specify the header of a search result. It should correspond to the format of the format parameter. This parameter is optional.
Example: =header="| *Topic:* | *Summary:* |"=
2. =format="..."= parameter
Use the format parameter to specify the format of one search hit.
Example: =format="| $topic | $summary |"=
Variables that can be used in the format string:
| *Name:* | *Expands To:* |
| =$web= | Name of the web |
| =$topic= | Topic name |
| =$topic(20)= | Topic name, "- " hyphenated each 20 characters |
| =$topic(30, -<br />)= | Topic name, hyphenated each 30 characters with separator "-<br />" |
| =$topic(40, ...)= | Topic name, shortended to 40 characters with "..." indication |
| =$parent= | Name of parent topic; empty if not set |
| =$parent(20)= | Name of parent topic, same hyphenation/shortening like =$topic()= |
| =$text= | Formatted topic text. In case of a =multiple="on"= search, it is the line found for each search hit. |
| =$locked= | LOCKED flag (if any) |
| =$date= | Time stamp of last topic update, e.g. =%GMTIME{"$day $mon $year - $hour:$min"}%= |
| =$isodate= | Time stamp of last topic update, e.g. =%GMTIME{"$year-$mo-$dayT$hour:$minZ"}%= |
| =$rev= | Number of last topic revision, e.g. =1.4= |
| =$username= | Login name of last topic update, e.g. =jsmith= |
| =$wikiname= | Wiki user name of last topic update, e.g. =JohnSmith= |
| =$wikiusername= | Wiki user name of last topic update, like =%MAINWEB%.JohnSmith= |
| =$createdate= | Time stamp of topic revision 1.1 |
| =$createusername= | Login name of topic revision 1.1, e.g. =jsmith= |
| =$createwikiname= | Wiki user name of topic revision 1.1, e.g. =JohnSmith= |
| =$createwikiusername= | Wiki user name of topic revision 1.1, e.g. =%MAINWEB%.JohnSmith= |
| =$summary= | Topic summary |
| =$formname= | The name of the form attached to the topic; empty if none |
| =$formfield(name)= | The field value of a form field; for example, =$formfield(TopicClassification)= would get expanded to =PublicFAQ=. This applies only to topics that have a [[TWikiForms][TWikiForm]] |
| =$formfield(name, 10)= | Form field value, "- " hyphenated each 10 characters |
| =$formfield(name, 20, -<br />)= | Form field value, hyphenated each 20 characters with separator "-<br />" |
| =$formfield(name, 30, ...)= | Form field value, shortended to 30 characters with "..." indication |
| =$pattern(reg-exp)= | A regular expression pattern to extract some text from a topic (does not search meta data; use =$formfield= instead). In case of a =multiple="on"= search, the pattern is applied to the line found in each search hit.%BB% Specify a RegularExpression that covers the whole text (topic or line), which typically starts with =.*=, and must end in =.*= %BB% Put text you want to keep in parenthesis, like =$pattern(.*?(from here.*?to here).*)= %BB% Example: =$pattern(.*?\*.*?Email\:\s*([^\n\r]+).*)= extracts the email address from a bullet of format =* Email: ...= %BB% This example has non-greedy =.*?= patterns to scan for the first occurance of the Email bullet; use greedy =.*= patterns to scan for the last occurance %BB% Limitation: Do not use =.*)= inside the pattern, e.g. =$pattern(.*foo(.*)bar.*)= does not work, but =$pattern(.*foo(.*?)bar.*)= does %BB% Note: Make sure that the integrity of a web page is not compromised; for example, if you include an HTML table make sure to include everything including the table end tag |
| =$n= or =$n()= | New line |
| =$nop= or =$nop()= | Is a "no operation". This variable gets removed; useful for nested search |
| =$quot= | Double quote (="=). Alternatively write =\"= to escape it |
| =$percnt= | Percent sign (=%=) |
| =$dollar= | Dollar sign (=$=) |
---++ Examples
#SearchBulletList
---+++ Bullet list showing topic name and summary
*Write this:*
=%SEARCH{ "FAQ" scope="topic" nosearch="on" nototal="on" header=" * *Topic: Summary:*" format=" * [[$topic]]: $summary" }%=
*To get this:*
%SEARCH{ "FAQ" scope="topic" nosearch="on" nototal="on" header=" * *Topic: Summary:*" format=" * [[$topic]]: $summary" }%
---+++ Table showing form field values of topics with a form
In a web where there is a form that contains a =TopicClassification= field, an =OperatingSystem= field and an =OsVersion= field we could write:
=| *Topic:* | *OperatingSystem:* | *OsVersion:* |=
=%SEARCH{ "[T]opicClassification.*?value=\"[P]ublicFAQ\"" scope="text" regex="on" nosearch="on" nototal="on" format="| [[$topic]] | $formfield(OperatingSystem) | $formfield(OsVersion) |" }%=
To get this:
Topic: | OperatingSystem: | OsVersion: |
---|---|---|
IncorrectDllVersionW32PTH10DLL | OsWin | 95/98 |
WinDoze95Crash | OsWin | 95 |