将Search API与Sharepoint Foundation 2010一起使用 - 0结果

时间:2010-04-12 19:29:46

标签: sharepoint

我是sharebe newbee,无法使用Sharepoint 2010 Foundation中的搜索API返回任何搜索结果。

到目前为止,我采取了以下步骤。

  1. Service Sharepoint Foundation Search v4正在运行并以本地服务
  2. 登录
  3. 在团队网站 - 网站设置 - 搜索和离线可用性下,已启用索引网站内容。
  4. 运行PowerShell脚本Get-SPSearchServiceInstance返回
  5. TypeName:SharePoint Foundation搜索
    说明:搜索服务器上的索引文件
    Id:91e01ce1-016e-44e0-a938-035d37613b70
    服务器:SPServer名称= V-SP2010
    服务:SPSearchService名称= SPSearch4
    IndexLocation:C:\ Program Files \ Common Files \ Microsoft Shared \ Web Server Exten                 sions \ 14个\ DATA \应用
    ProxyType:默认
    状态:在线

    1. 当我使用团队网站上的搜索文本框进行搜索时,我得到了我期望的结果。
    2. 现在,当我尝试使用搜索API复制搜索结果时,我收到错误或0结果。

      以下是一些示例代码:

      using Microsoft.SharePoint.Search.Query;
      using (var site = new SPSite(_sharepointUrl, token))
      {
          // 
          FullTextSqlQuery fullTextSqlQuery = new FullTextSqlQuery(site)
          {
              QueryText = String.Format("SELECT Title, SiteName, Path FROM Scope() WHERE \"scope\"='All Sites' AND CONTAINS('\"{0}\"')", searchPhrase),
              //QueryText = String.Format("SELECT Title, SiteName, Path FROM Scope()", searchPhrase),
              TrimDuplicates = true,
              StartRow = 0,
              RowLimit = 200,
              ResultTypes = ResultType.RelevantResults
              //IgnoreAllNoiseQuery = false
          };
      
          ResultTableCollection resultTableCollection = fullTextSqlQuery.Execute();
          ResultTable result = resultTableCollection[ResultType.RelevantResults];
      
          DataTable tbl = new DataTable();
          tbl.Load(result, LoadOption.OverwriteChanges);
      }
      

      当范围设置为“所有站点”时,我检索到有关搜索范围不可用的错误。其他搜索只返回0结果。

      关于我做错了什么的任何想法?

2 个答案:

答案 0 :(得分:0)

这是我们提出的解决方法。

  1. 我们没有像我们希望的那样让基础搜索工作。一旦RTM版本的Sharepoint Foundation发布,我们将再次对其进行审核。

  2. 我们安装了Search Server Express 2010测试版。这允许我们使用office服务器命名空间和相应的类。这按预期工作,我们能够以编程方式搜索Sharepoint Foundation。

答案 1 :(得分:0)

我也没有通过在Foundation Search上使用FullTextSqlQuery获得结果,但也许您可以使用KeywordQuery:

        SPSite thisSite = SPControl.GetContextSite(Context);
        Microsoft.SharePoint.Search.Query.KeywordQuery kwQuery = new Microsoft.SharePoint.Search.Query.KeywordQuery(thisSite);
        kwQuery.RowLimit = 1000;
        kwQuery.QueryText = "searchString";         
        kwQuery.HiddenConstraints = "site:\"http://devXX:800/test/docs\"";
        kwQuery.ResultTypes = ResultType.RelevantResults;
        ResultTableCollection results = kwQuery.Execute();
        ResultTable relevantResults = results[ResultType.RelevantResults];            
        dt.Load(relevantResults, LoadOption.OverwriteChanges);