我正在为SharePoint开发客户端,我正在实现2013和2010 SharePoint SearchServices。我在获取secondaryFileExtension字段时遇到问题。 低于我对2010年搜索服务的要求:
<QueryPacket Revision="1000">
<Query>
<Context>
<QueryText language="en-US" type="STRING">Audio SITE:"https://xxxxxxxxxxxxxxxxx.com/demo/testsp/Documents"
</QueryText>
</Context>
<SupportedFormats Format="urn:Microsoft.Search.Response.Document.Document"/>
<Range>
<StartAt>1</StartAt>
<Count>30</Count>
</Range>
<EnableStemming>true</EnableStemming>
<EnableSpellCheck>Suggest</EnableSpellCheck>
<IncludeSpecialTermsResults>true</IncludeSpecialTermsResults>
<IncludeRelevantResults>true</IncludeRelevantResults>
<ImplicitAndBehavior>true</ImplicitAndBehavior>
<TrimDuplicates>true</TrimDuplicates>
<Properties>
<Property name="Rank"/>
<Property name="Title" />
<Property name="Author"/>
<Property name="Size" />
<Property name="Path" />
<Property name="Description" />
<Property name="Write"/>
<Property name="SiteName" />
<Property name="HitHighlightedSummary"/>
<Property name="HitHighlightedProperties"/>
<Property name="ContentClass"/>
<Property name="IsDocument"/>
<Property name="FileExtension"/>
</Properties>
</Query>
</QueryPacket>
使用以下SOAP信封:
<?xml version="1.0" encoding="utf-8"?>
<soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
<soap:Body>
<Query xmlns="urn:Microsoft.Search">
<queryXml>THE XML GOES HERE!</queryXml>
</Query>
</soap:Body>
</soap:Envelope>
我收到以下回复:
<Envelope>
<Body>
<QueryResponse>
<QueryResult><ResponsePacket xmlns="ur…</QueryResult>
</QueryResponse>
</Body>
</Envelope>
QueryResult:
<Document>
<Action>
<LinkUrl fileExt="aspx">https://xxxxxxxxxxxxxxx…</LinkUrl>
</Action>
<Properties>
<Property>
<Name>Rank</Name>
<Type>Int64</Type>
<Value>67299882</Value>
</Property>
<Property>
<Name>Title</Name>
<Type>String</Type>
<Value>Audio 2014-01-18 19_10</Value>
</Property>
<Property>
<Name>Author</Name>
<Type>Object</Type>
<Value>Testsp</Value>
</Property>
<Property>
<Name>Size</Name>
<Type>Int64</Type>
<Value>62327</Value>
</Property>
<Property>
<Name>Path</Name>
<Type>String</Type>
<Value>https://xxxxxxxxxxxxxxxx.com/demo/testsp/Documents/Forms/DispForm.aspx?ID=1</Value>
</Property>
<Property>
<Name>Write</Name>
<Type>DateTime</Type>
<Value>2014-01-19T02:53:05</Value>
</Property>
<Property>
<Name>SiteName</Name>
<Type>String</Type>
<Value>https://xxxxxxxxxxxxxx…</Value>
</Property>
<Property>
<Name>HitHighlightedSummary</Name>
<Type>String</Type>
<Value><c0>Audio</c0> 2014-01-18…</Value>
</Property>
<Property>
<Name>HitHighlightedProperties</Name>
<Type>String</Type>
<Value><HHTitle><c0>Audio</c0> 2…</Value>
</Property>
<Property>
<Name>ContentClass</Name>
<Type>String</Type>
<Value>STS_ListItem_DocumentLibr…</Value>
</Property>
<Property>
<Name>IsDocument</Name>
<Type>Boolean</Type>
<Value>false</Value>
</Property>
<Property>
<Name>FileExtension</Name>
<Type>String</Type>
<Value>ASPX</Value>
</Property>
</Properties>
</Document>
但是属性SecondaryFileExtention不存在(由于音频文件类型,它应该包含“acc”)。 action标记包含以下链接: https://xxxxxxxxxxxxxxx.com/demo/testsp/Documents/Forms/DispForm.aspx?ID=1 当我转到此链接时,我看到一个包含2个字段名称和标题的表单,我可以从中下载.acc文件。 使用SharePoint 2013 Search Service执行类似请求会返回pdf文件的以下属性:
<element m:type="SP.SimpleDataRow">
<Cells>
<element m:type="SP.KeyValue">
<Key>Rank</Key>
<Value>12.6491832733154</Value>
<ValueType>Edm.Double</ValueType>
</element>
<element m:type="SP.KeyValue">
<Key>DocId</Key>
<Value>4458265</Value>
<ValueType>Edm.Int64</ValueType>
</element>
<element m:type="SP.KeyValue">
<Key>WorkId</Key>
<Value>4458265</Value>
<ValueType>Edm.Int64</ValueType>
</element>
<element m:type="SP.KeyValue">
<Key>Title</Key>
<Value>W9</Value>
<ValueType>Edm.String</ValueType>
</element>
<element m:type="SP.KeyValue">
<Key>Author</Key>
<Value>Dmitry Ivahno;Test User1</Value>
<ValueType>Edm.String</ValueType>
</element>
<element m:type="SP.KeyValue">
<Key>Size</Key>
<Value>162678</Value>
<ValueType>Edm.Int64</ValueType>
</element>
<element m:type="SP.KeyValue">
<Key>Path</Key>
<Value>https://xxxxxxxxxxxx.co…</Value>
<ValueType>Edm.String</ValueType>
</element>
<element m:type="SP.KeyValue">
<Key>Description</Key>
<Value m:null="true"/>
<ValueType>Null</ValueType>
</element>
<element m:type="SP.KeyValue">
<Key>Write</Key>
<Value>2013-05-23T14:18:46.00000…</Value>
<ValueType>Edm.DateTime</ValueType>
</element>
<element m:type="SP.KeyValue">
<Key>CollapsingStatus</Key>
<Value>0</Value>
<ValueType>Edm.Int64</ValueType>
</element>
<element m:type="SP.KeyValue">
<Key>HitHighlightedSummary</Key>
<Value xml:space="preserve">Form W-9 (Rev. Decembe…</Value>
<ValueType>Edm.String</ValueType>
</element>
<element m:type="SP.KeyValue">
<Key>HitHighlightedProperties</Key>
<Value m:null="true"/>
<ValueType>Null</ValueType>
</element>
<element m:type="SP.KeyValue">
<Key>contentclass</Key>
<Value>STS_ListItem_DocumentLibr…</Value>
<ValueType>Edm.String</ValueType>
</element>
<element m:type="SP.KeyValue">
<Key>PictureThumbnailURL</Key>
<Value m:null="true"/>
<ValueType>Null</ValueType>
</element>
<element m:type="SP.KeyValue">
<Key>ServerRedirectedURL</Key>
<Value m:null="true"/>
<ValueType>Null</ValueType>
</element>
<element m:type="SP.KeyValue">
<Key>ServerRedirectedEmbedURL</Key>
<Value m:null="true"/>
<ValueType>Null</ValueType>
</element>
<element m:type="SP.KeyValue">
<Key>ServerRedirectedPreviewUR…</Key>
<Value m:null="true"/>
<ValueType>Null</ValueType>
</element>
<element m:type="SP.KeyValue">
<Key>FileExtension</Key>
<Value>pdf</Value>
<ValueType>Edm.String</ValueType>
</element>
<element m:type="SP.KeyValue">
<Key>ContentTypeId</Key>
<Value>0x010100FA0E9F7CB9E8B94DB…</Value>
<ValueType>Edm.String</ValueType>
</element>
<element m:type="SP.KeyValue">
<Key>ParentLink</Key>
<Value>https://xxxxxxxxxxx.co…</Value>
<ValueType>Edm.String</ValueType>
</element>
<element m:type="SP.KeyValue">
<Key>ViewsLifeTime</Key>
<Value>88</Value>
<ValueType>Edm.Int64</ValueType>
</element>
<element m:type="SP.KeyValue">
<Key>ViewsRecent</Key>
<Value>0</Value>
<ValueType>Edm.Int64</ValueType>
</element>
<element m:type="SP.KeyValue">
<Key>SectionNames</Key>
<Value/>
<ValueType>Edm.String</ValueType>
</element>
<element m:type="SP.KeyValue">
<Key>SectionIndexes</Key>
<Value/>
<ValueType>Edm.String</ValueType>
</element>
<element m:type="SP.KeyValue">
<Key>SiteLogo</Key>
<Value m:null="true"/>
<ValueType>Null</ValueType>
</element>
<element m:type="SP.KeyValue">
<Key>SiteDescription</Key>
<Value m:null="true"/>
<ValueType>Null</ValueType>
</element>
<element m:type="SP.KeyValue">
<Key>deeplinks</Key>
<Value m:null="true"/>
<ValueType>Null</ValueType>
</element>
<element m:type="SP.KeyValue">
<Key>importance</Key>
<Value>0</Value>
<ValueType>Edm.Int64</ValueType>
</element>
<element m:type="SP.KeyValue">
<Key>SiteName</Key>
<Value>https://xfa.sharepoint.co…</Value>
<ValueType>Edm.String</ValueType>
</element>
<element m:type="SP.KeyValue">
<Key>IsDocument</Key>
<Value>true</Value>
<ValueType>Edm.Boolean</ValueType>
</element>
<element m:type="SP.KeyValue">
<Key>LastModifiedTime</Key>
<Value>2013-05-23T14:18:46.00000…</Value>
<ValueType>Edm.DateTime</ValueType>
</element>
<element m:type="SP.KeyValue">
<Key>FileType</Key>
<Value>pdf</Value>
<ValueType>Edm.String</ValueType>
</element>
<element m:type="SP.KeyValue">
<Key>IsContainer</Key>
<Value>false</Value>
<ValueType>Edm.Boolean</ValueType>
</element>
<element m:type="SP.KeyValue">
<Key>WebTemplate</Key>
<Value m:null="true"/>
<ValueType>Null</ValueType>
</element>
<element m:type="SP.KeyValue">
<Key>SecondaryFileExtension</Key>
<Value>pdf</Value>
<ValueType>Edm.String</ValueType>
</element>
<element m:type="SP.KeyValue">
<Key>docaclmeta</Key>
<Value m:null="true"/>
<ValueType>Null</ValueType>
</element>
<element m:type="SP.KeyValue">
<Key>OriginalPath</Key>
<Value>https://xfa.sharepoint.co…</Value>
<ValueType>Edm.String</ValueType>
</element>
<element m:type="SP.KeyValue">
<Key>PartitionId</Key>
<Value>d4cd988f-8939-401f-82e9-8…</Value>
<ValueType>Edm.Guid</ValueType>
</element>
<element m:type="SP.KeyValue">
<Key>UrlZone</Key>
<Value>0</Value>
<ValueType>Edm.Int32</ValueType>
</element>
<element m:type="SP.KeyValue">
<Key>AAMEnabledManagedProperti…</Key>
<Value>AttachmentURI;deeplinks;D…</Value>
<ValueType>Edm.String</ValueType>
</element>
<element m:type="SP.KeyValue">
<Key>RenderTemplateId</Key>
<Value>~sitecollection/_catalogs…</Value>
<ValueType>Edm.String</ValueType>
</element>
<element m:type="SP.KeyValue">
<Key>piSearchResultId</Key>
<Value>0_1</Value>
<ValueType>Edm.String</ValueType>
</element>
</Cells>
我是否可以通过SharePoint 2010 Search API获得真正的文件扩展名?
答案 0 :(得分:1)
在对搜索服务进行SharePoint 2010 SOAP调用时(使用SPServices),我遇到了类似的问题。我有两个自定义字段 - 一个子标题(单行文本)和一个文章类别(托管元数据) - 我需要在搜索结果中显示,而我所有回来的正是你列出的内容(Rank through File Extension) )。
这两个字段必须添加为&#34;托管属性&#34;可以回到搜索结果中 - 步骤在这里:http://technet.microsoft.com/en-us/library/ff621097(v=office.14).aspx(您虽然需要集中管理级访问)。
我的托管属性在那里后,我遇到了另一个障碍,因为虽然我可以看到可用于搜索的托管属性(使用FAST Search for SharePoint工具:http://fastforsharepoint.codeplex.com/),但他们没有显示在结果中,即使我把它们放在&lt; Properties&gt;中SOAP调用列表。
对此的解决方案实际上是在&lt; QueryText&gt;中指定带有我的subheader值的通配符。字段(注意&#34;#&#34;)...这似乎强制显示这两个字段(路径条件是可选的):
<QueryText language='en-US' type='STRING'>
My Search Phrase SubHeader:# AND path:/PathTo/My/SPSite
</QueryText>
不确定这是否是设计或是否是&#34;功能&#34;在SharePoint中只返回字段是存在的和/或被请求的东西。
如果您有服务器级访问权限,那么可能会有更优雅的解决方案,但这对我有用。