$$Search表单的域

$$Search表单的域

 

 

域名

数据类型

描述

Query

文本域

搜索的单词或条件

SearchMax

文本域或关键字域

搜索结果的最大文档值

SearchOrder

关键字域

对搜索结果排序:

无序/1;老文档在前/2;新文档在前/3

SearchWV

关键字域

是否包含单词的变体:

包含/TRUE;不包含/FALSE

SearchThesaurus

关键字域

是否包含同义词:

包含/TRUE;不包含/FALSE

SaveOption

文本域

值为0表示不能保存由本表单创建的文档

 

 

一.      定制视图搜索表单

当你选择一个连接到视图的搜索链接的时候,Domino在当前数据库中寻找一个名为$$Search的表单。如果存在,Domino显示这个表单,否则,它显示默认的视图搜索表单。搜索表单的ACTION属性依赖于搜索的视图。例如,由Domino产生的视图的搜索表单可能包含如下<FORM>标签:<FORMMETHOD=POSTACTION="http://server/123e 543a123e 543a123e 543a123e 543a?SearchView">

然而,当Domino显示一个规则表单的时候,对表单的操作使用CreateDocumentURL,下面是两种避开这个问题的主要方法:

方法1:使用你自己的<FORM>标签覆盖由Domino产生的<FORM>标签。

方法2:使用$$Return域或者WebQuerySave代理改变当用户按下Submit按钮时Domino的反应。

第一个方法有点旧了,但是确实有效(不能保证以后仍然有效)。只需要把下面的HTML通用文本包含在你的$$Search表单的顶部:

[</FORM><FORMMETHOD=POSTACTION="?SearchView">]

这将终止由Domino产生的<FORM>模块并开始一个新的<FORM>模块。这个操作的URL

包含在当前目录中,因此如果用户显示$$Search表单使用下面的URL

http://server/123e 543a123e 543a123e 543a123e 543a/$searchForm?SearchView

则这个操作URL转换为:

http://server/123e 543a123e 543a123e 543a123e 543a?SearchView

使用第二种方法,你使用一个$$Return域或者WebQuerySave代理分析用户的输入并把浏榄器指向SearchViewURL。例如,Domino的“SearchSite”模板的$$Search表单使用下面的$$Return公式:

DBName:=@Subset(@DbName;-1);

"[[/"1DBName1"?SearchSite&Query="1Query1"&SearchOrder="1@Text(Sort)1"&SearchMax="1@Text(MaxResults)1"&SearchWV="1@If(ExactMatch="";"TRUE";"FALSE")1"&SearchThesaurus="1@If(UseThesaurus="";"FALSE";"TRUE")1"]]"

这个公式返回如下值:

[/db?SearchSite&Query=cats&SearchOrder=1&SearchMax=10SearchWV=TRUE&SearchThesaurus=FALSE]

因为这种方法使用了HTTPGET方法而不是POST方法,它导致了很长的可读性很差的URL。但是,另一方面,这种方法使你可以使用Notes公式语句计算查询自变量的值。

为什么要使用生成查询自变量的公式呢?

坦率的说,大部分用户并不能很熟练地使用Domino查询语法组成如下查询:

FIELDTitleCONTAINS"domain"ORFIELDCategoriesCONTAINSlotus

但是这些查询可能非常有用而且有效率。当你只对某个特定的域感兴趣的话为什么要对每个文档进行全文搜索呢?你可以通过添加选项定制$$Search表单使用户搜索特定的域变的简单,从而可以使用$$Return公式(或WebQuerySave代理)根据用户的输入计算一个Domino搜索URL

无论使用方法1还是方法2,你可能都想在你的$$Search表单中包含表2-4中部分或所有域。

 

 

 

 

FAQ

Q

1. Create a form called $$Search. It needs to contain a field for the user to enter their search string, and a button. I use the following instead if a button:

<A HREF="javascript:document.forms[0].submit();"
onClick ="javascript:document.forms[0].submit();"
OnMouseout="flipImage('Searchbutton','Searchbutton'); " OnMouseOver="flipImage('Searchbutton','Searchbuttonon');">
<IMG SRC="<Computed Value>/Search_0.gif?OpenImageResource" name = "Searchbutton" alt="Search" border = 0 height=22 width=24></a></div>

where
"/"+@ReplaceSubstring(@ReplaceSubstring(@Subset(@DbName;-1);" ";"+");"//";"/")
is in the computed value

2. Full text index your database

3. Create a view to show all documents as you would like them to appear in the search results.

4. Create a form called $$SearchTemplateDefault containing a field called $$ViewBody

I've done all that has been told, made a view called alldocuments, but when i press on the search button, it only gives me "form processed".

Another thing, on the $$search form, where should i put ""/"+@ReplaceSubstring(@ReplaceSubstring(@Subset(@DbName;-1);" ";"+");"//";"/")" and how??

Can someone please help me, because i need this to work ......

 

 

A

RE: $$search not working
Posted by stephano bennetti on 12.Jun.02 at 04:16 using a Web browser
Category: Domino Designer -- Other Release: All Releases Platform: All Platforms

On the $$Search form you need a $$Return field.
It would contain something along these lines....

DBName:=@Subset(@DbName;-1);
"[[/"+DBName+"/($All)?SearchView&Query="+Query+"&SearchOrder="+@Text(Sort)+"&SearchMax="+@Text(MaxResults)+"&SearchWV="+@If(ExactMatch="";"TRUE";"FALSE")+"&SearchThesaurus="+@If(UseThesaurus="";"FALSE";"TRUE")+"]]"

Dont forget to include a SaveOptions field set to "0" so search forms don't get saved.

You can get all this stuff if you create a new site search database from the ntf template on your server.

Not onlt that, but if you want to see search URLs in action than watch what happens in the address bar when you search this forum.

Good Luck

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值