2010-08-26 46 views
1

我在过去的几天中学习了如何通过http:// {servername} /_vti_bin/spsearch.asmx Web服务搜索Sharepoint 。Sharepoint网络服务搜索:返回的结果数量指定

要克服的剩余问题是,当我执行搜索时,只返回前10个结果。在返回的XML中,我可以看到:

<StartAt>1</StartAt> 
<Count>10</Count> 
<TotalAvailable>42</TotalAvailable> 

所以我可以看到总共有42个结果,但我只得到前10个返回。

我传递到Web服务的查询查询()方法是:

<?xml version='1.0' encoding='utf-8' ?><QueryPacket xmlns='urn:Microsoft.Search.Query' Revision='1000'><Query domain='QDomain'><SupportedFormats><Format>urn:Microsoft.Search.Response.Document.Document</Format></SupportedFormats><Context><QueryText language='en-US' type='STRING'>{0}</QueryText></Context></Query></QueryPacket> 

如何修改我的查询,以便它会立刻返回所有的结果?

回答

1

你需要告诉搜索你想要多少结果。您可以在MSDN上查看搜索查询架构。对您的相关部分是:

<Range> 
    <StartAt /> 
    <Count /> 
</Range> 

你会想是在你的标签下面

<Range> 
    <StartAt>0</StartAt> 
    <Count>50</Count> 
</Range> 

(你可能不需要StartAt因为它默认为0)

0
<QueryPacket xmlns="urn:Microsoft.Search.Query" Revision="1000"> 
     <Query domain="QDomain"> 
      <SupportedFormats> 
        <Format>urn:Microsoft.Search.Response.Document.Document</Format> 
      </SupportedFormats> 
      <Range> 
        <Count>MaxNumberGoesHere</Count> 
      </Range> 
      <Context> 
        <QueryText language="en-US" type="STRING">Maria</QueryText> 
      </Context> 
     </Query> 
</QueryPacket> 

我以为我以前曾尝试过这种方式,并得到一个错误,因此我在这里问。看起来我必须得到错误的查询。