如何在WSS中利用KeywordQuery创建搜索查询(转)

转自:http://www.cnblogs.com/rippleyong/archive/2008/12/08/1350266.html
WSS(Windows SharePoint Services)
KeywordQuery可执行关键字语法搜索查询,可以将搜索条件直接传递给搜索组件而无需通过搜索条件来分析以生成查询。


1.添加两个引用
Microsoft.Sharepoint
Microsoft.Sharepoint.Search

如果你使用MOSS操作可以引入Microsoft.Office.Server.Search


2.代码实现
类的构造函数具有两次重载;当实例化类时,必须指定网站集(作为 SPSite 类的实例)或者网站名称

DataTable resultsDataTable  =   new  DataTable(); 
using  (SPSite site  =   new  SPSite( " http://server/ " )) 

KeywordQuery query 
=   new  KeywordQuery(site); 
query.QueryText 
=  queryText; 
query.ResultTypes 
=  ResultType.RelevantResults; 
ResultTableCollection resultTables 
=  query.Execute(); 
if  (resultTables.Count  >   0

ResultTable relevantResults 
=  resultTables[ResultType.RelevantResults]; 
resultsDataTable.Load(relevantResults, LoadOption.OverwriteChanges); 


return  resultsDataTable; 

 

虽然在WSS中的返回的Microsoft.SharePoint.Search.Query.ResultType只能是RelevantResults,但是在代码中你还是必须要指明。否则不会返回任何ResultTable。

Microsoft.Office.Server.Search.Query.RelevantResults可以用四种返回结果。

query.ResultTypes  =  ResultType.RelevantResults; 

 


3.获取特定属性字段
默认返回以下属性字段:
Work ID
Rank
Title
Author
Size
Path
Description
Write
SiteName
CollapsingStatus
HitHighlightedSummary
HitHighlightedProperties
ContentClass
IsDocument
PictureThumbnailURL

如果你想要返回确定的属性字段,设置query.SelectProperties,下面的实例只返回Title和Size

query.SelectProperties.Add( " title " ); 
query.SelectProperties.Add(
" size " ); 

 

 

4.设置设置返回结果分页

int  pageSize  =   3
int  page  =   0


query.StartRow 
=  page  *  pageSize; 
query.RowLimit 
=  pageSize; 

 

5.设置返回结果排序

query.SortList.Add( " Rank " , SortDirection.Ascending); 
query.SortList.Add(
" WorkId " , SortDirection.Descending); 

 

转载于:https://www.cnblogs.com/greeny/archive/2010/09/06/1819437.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
资源包主要包含以下内容: ASP项目源码:每个资源包都包含完整的ASP项目源码,这些源码采用了经典的ASP技术开发,结构清晰、注释详细,帮助用户轻松理解整个项目的逻辑和实现方式。通过这些源码,用户可以学习到ASP的基本语法、服务器端脚本编写方法、数据库操作、用户权限管理等关键技术。 数据库设计文件:为了方便用户更好地理解系统的后台逻辑,每个项目都附带了完整的数据库设计文件。这些文件通常包括数据库结构图、数据表设计文档,以及示例数据SQL脚本。用户可以通过这些文件快速搭建项目所需的数据库环境,并了解各个数据表之间的关系和作用。 详细的开发文档:每个资源包都附有详细的开发文档,文档内容包括项目背景介绍、功能模块说明、系统流程图、用户界面设计以及关键代码解析等。这些文档为用户提供了深入的学习材料,使得即便是从零开始的开发者也能逐步掌握项目开发的全过程。 项目演示与使用指南:为帮助用户更好地理解和使用这些ASP项目,每个资源包都包含项目的演示文件和使用指南。演示文件通常以视频或图文形式展示项目的主要功能和操作流程,使用指南则详细说明了如何配置开发环境、部署项目以及常见问题的解决方法。 毕业设计参考:对于正在准备毕业设计的学生来说,这些资源包是绝佳的参考材料。每个项目不仅功能完善、结构清晰,还符合常见的毕业设计要求和标准。通过这些项目,学生可以学习到如何从零开始构建一个完整的Web系统,并积累丰富的项目经验。
以下是一个基于 C 语言的 WebSocket Secure(WSS)服务端的示例代码: ```c #include <stdio.h> #include <stdlib.h> #include <string.h> #include <errno.h> #include <unistd.h> #include <sys/socket.h> #include <netinet/in.h> #include <arpa/inet.h> #include <openssl/ssl.h> #include <openssl/err.h> #define BUFFER_SIZE 1024 int main(int argc, char *argv[]) { int server_fd, client_fd, opt = 1, len; struct sockaddr_in server_addr, client_addr; char buffer[BUFFER_SIZE]; SSL_CTX *ctx; SSL *ssl; // 创建 SSL 上下文 SSL_library_init(); ctx = SSL_CTX_new(TLSv1_2_server_method()); if (!ctx) { printf("SSL_CTX_new() failed: %s\n", strerror(errno)); exit(1); } // 加载证书和私钥 if (SSL_CTX_use_certificate_file(ctx, "server.crt", SSL_FILETYPE_PEM) <= 0) { printf("SSL_CTX_use_certificate_file() failed: %s\n", strerror(errno)); exit(1); } if (SSL_CTX_use_PrivateKey_file(ctx, "server.key", SSL_FILETYPE_PEM) <= 0) { printf("SSL_CTX_use_PrivateKey_file() failed: %s\n", strerror(errno)); exit(1); } // 创建 TCP 套接字 if ((server_fd = socket(AF_INET, SOCK_STREAM, 0)) == -1) { printf("socket() failed: %s\n", strerror(errno)); exit(1); } // 设置 SO_REUSEADDR 选项 if (setsockopt(server_fd, SOL_SOCKET, SO_REUSEADDR, &opt, sizeof(opt)) == -1) { printf("setsockopt() failed: %s\n", strerror(errno)); exit(1); } // 绑定地址和端口 memset(&server_addr, 0, sizeof(server_addr)); server_addr.sin_family = AF_INET; server_addr.sin_addr.s_addr = htonl(INADDR_ANY); server_addr.sin_port = htons(8443); if (bind(server_fd, (struct sockaddr *)&server_addr, sizeof(server_addr)) == -1) { printf("bind() failed: %s\n", strerror(errno)); exit(1); } // 开始监听 if (listen(server_fd, 10) == -1) { printf("listen() failed: %s\n", strerror(errno)); exit(1); } printf("Listening on port 8443...\n"); while (1) { len = sizeof(client_addr); // 接受客户端连接 if ((client_fd = accept(server_fd, (struct sockaddr *)&client_addr, &len)) == -1) { printf("accept() failed: %s\n", strerror(errno)); continue; } printf("Accepted connection from %s:%d\n", inet_ntoa(client_addr.sin_addr), ntohs(client_addr.sin_port)); // 创建 SSL 套接字 ssl = SSL_new(ctx); SSL_set_fd(ssl, client_fd); // 进行 SSL 握手 if (SSL_accept(ssl) != 1) { printf("SSL_accept() failed: %s\n", strerror(errno)); SSL_shutdown(ssl); close(client_fd); continue; } printf("SSL handshake successful\n"); // 接收数据并回复 while (1) { len = SSL_read(ssl, buffer, BUFFER_SIZE); if (len <= 0) { printf("SSL_read() failed: %s\n", strerror(errno)); break; } buffer[len] = '\0'; printf("Received data: %s\n", buffer); SSL_write(ssl, buffer, strlen(buffer)); } // 关闭 SSL 套接字 SSL_shutdown(ssl); SSL_free(ssl); // 关闭客户端套接字 close(client_fd); printf("Connection closed\n"); } // 关闭 SSL 上下文 SSL_CTX_free(ctx); return 0; } ``` 在上述代码,我们使用了 OpenSSL 库来实现 WSS。首先,我们创建了一个 SSL 上下文,用于加载证书和私钥,并设置支持的 SSL/TLS 协议版本。然后,我们创建一个 TCP 套接字并绑定地址和端口,开始监听客户端连接。每当有一个客户端连接进来,我们就接受连接并创建一个 SSL 套接字,进行 SSL 握手。一旦握手成功,我们就可以通过 SSL_read() 和 SSL_write() 函数进行数据的收发。当客户端关闭连接时,我们关闭 SSL 套接字并关闭客户端套接字。最后,我们关闭 SSL 上下文并退出程序。 要编译上述代码,你需要安装 OpenSSL 库并使用以下命令: ``` gcc -o wss_server wss_server.c -lssl -lcrypto ``` 其,-lssl 和 -lcrypto 是链接 OpenSSL 库的参数。你还需要准备一个自签名的服务器证书和私钥,用于进行 SSL 握手。你可以使用 OpenSSL 命令生成: ``` openssl req -x509 -newkey rsa:4096 -keyout server.key -out server.crt -days 365 ``` 这将生成一个有效期为 365 天的自签名证书和私钥。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值