过去几天我在学校里学习如何通过 http:// {servername} /_vti_bin/spsearch.asmx Web服务来搜索Sharepoint。
要解决的剩余问题是,当我执行搜索时,仅返回前10个结果。在返回的XML中,我可以看到:
<StartAt>1</StartAt>
<Count>10</Count>
<TotalAvailable>42</TotalAvailable>
所以我可以看到总共有42个结果,但我只获得了前10个结果。
我传递给Web Service的Query()方法的查询是:
<?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>
如何修改我的查询以便一次性返回所有结果?
答案 0 :(得分:1)
您需要告诉搜索您想要多少结果。您可以在MSDN上查看搜索查询架构。相关部分是:
<Range>
<StartAt />
<Count />
</Range>
您需要在标记
中使用以下内容<Range>
<StartAt>0</StartAt>
<Count>50</Count>
</Range>
(你可能不需要StartAt,因为它默认为0)
答案 1 :(得分: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>
我以为我之前尝试过这个并且出错了,所以我在这里问。看起来我一定得错了。