Exchange全文检索概述 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 %26amp; WebDAV 在执行查询时可以采用两种方法,ADO或者WebDAV。这里只列举实现的代码加以说明。 3-3-1、WebDAV。 通过向指定查询的URL发送HTTP的SEARCH请求,命令参数和相应的数据,都是一定格式的XML文档(参看WebDAV的参考手册)。示例如下: private System.Xml.XmlDocument SendSearchRequest(System.String sUrl,System.String sQuery) { 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);
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(); 上一篇:Microsoft Exchange 2000 群集 下一篇:如何删除和重新安装IIS和Exchange 更多相关文章
|
推荐文章
精彩文章
|