手机站
网通分站
电信主站
密 码:
用户名:
当前位置 : 主页>服务器技术>Mail服务器>列表

Exchange全文检索概述

来源:互联网 作者:west263.com 时间:2008-02-23
西部数码-全国虚拟主机10强!40余项虚拟主机管理功能,全国领先!双线多线虚拟主机南北访问畅通无阻!免费赠送企业邮局,.CN域名,自助建站480元起,免费试用7天,满意再付款! P4主机租用799元/月.月付免压金!
FORMSOF:这个谓词需要包含在CONTAINS或FREETEXT谓词中使用,通过该谓词修饰,能够对关键字的每一个变换形式进行匹配,关键字的变换形式是由搜索引擎决定的。格式为,
FORMSOF( type,"string" [,"string"] )
在Exchange中type参数的值恒为INFLECTIONAL。
RANK BY:该谓词通常用来修饰CONTAINS或FREETEXT谓词,用来表示关键字出现的频度。格式为,
RANK BY CLAUSE (Mechanism, Weight)
其中CLAUSE参数为WEIGHT或COERCION,WEIGHT表示权值,CORECION居然没有任何说明。Mechanism参数,表示行为,例如WEIGHT或MULTIPHY。Weight为0-1之间的一个数值,表示权重。
当WHERE子句中包含多部分CONTAINS和FREETEXT时,有了RANK BY,能够认为是匹配度,很有用。添加RANK BY谓词之后,能够读取"urn:schemas.microsoft.com:fulltextqueryinfo"属性的值,来比较记录之间的匹配程度。我不知道该属性最大的值为多少,但是从获得的实际数据的情况来看,最大为128。
来看一个完整的例子:
Select "DAV:href","urn:schemas.microsoft.com:fulltextqueryinfo:rank"
FROM Scope('DEEP TRAVERSAL OF ""')
WHERE FREETEXT('"program" OR "software"') RANK BY WEIGHT(1.0) OR CONTAINS('FORMSOF(INFLECTIONAL,"java") AND "vb"') RANK BY WEIGHT(0.5)
以上仅仅对有关全文查询相关的内容进行说明,完成的Store SQL的语法,参阅MSDN中的文档。
顺便说一句,Exchange主要提供协同服务,而非文档管理,所以在全文检索的支持上并非特别强大和灵活。MS的另一个服务器产品Sharepoint Portal Server,主要功能是文档管理,其重要应用之一即提供检索服务,所以他的全文检索的功能更加强大一点。除了上述内容外,还提供了NEAR、ISABOUT、RANKMETHOD等修饰项(Term),能够更好的控制查询条件。其中细节也请自行参阅相关文档。
3-3、ADO & WebDAV
在执行查询时能够采用两种方法,ADO或WebDAV。这里只列举实现的代码加以说明。
3-3-1、WebDAV。
通过向指定查询的URL发送HTTP的SEARCH请求,命令参数和相应的数据,都是一定格式的XML文档(参看WebDAV的参考手册)。示例如下:
private System.Xml.XmlDocument SendSearchRequest(System.String sUrl,System.String sQuery)

www.bitsCN.com


{
System.Net.HttpWebRequest oRequest = null;
System.Net.HttpWebResponse oResponse = null;
System.Net.NetworkCredential oCredential = null;
System.IO.Stream oStream = null;
System.Text.UTF8Encoding oEncoder = new System.Text.UTF8Encoding();
System.Byte[] abData = null;
System.Xml.XmlDocument xmldoc = null;
if ( sUrl == null || sUrl == String.Empty)
return null;
if (sQuery == null || sQuery == String.Empty)
return null;
abData = oEncoder.GetBytes(sQuery);
if (abData == null)
return null;
oCredential = new NetworkCredential("administrator","server",String.Empty); bitsCN.nET中国网管博客
oRequest = (System.Net.HttpWebRequest) WebRequest.Create(sUrl);
if (oRequest != null)
{
// preparing search request
oRequest.ProtocolVersion = HttpVersion.Version11;
oRequest.Method = @"SEARCH";
if (oCredential != null)
oRequest.Credentials = oCredential.GetCredential(new System.Uri(sUrl),String.Empty);
oRequest.ContentType = @"text/xml";
oRequest.ContentLength = abData.Length;
oStream = oRequest.GetRequestStream();
oStream.Write(abData,0,abData.Length);
oStream.Close();
// waiting for response
try
{
oResponse = (System.Net.HttpWebResponse) oRequest.GetResponse();
oRequest = null;
中国网管联盟

}
catch(System.Exception e)
{
Trace.WriteLine("SendSearchRequest: " e.Message);
}
if (oResponse != null)
{
oStream = oResponse.GetResponseStream();
// get data from stream
if (oStream != null)
{
try
{
xmldoc = new XmlDocument();
if (xmldoc != null)
{
xmldoc.Load(oStream);
}
}
catch(System.Exception e)
{
www.bitsCN.com

Trace.WriteLine("SendSearchRequest: " e.Message);

文章整理:西部数码--专业提供域名注册虚拟主机服务
http://www.west263.com
以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!