科技行者

行者学院 转型私董会 科技行者专题报道 网红大战科技行者

知识库

知识库 安全导航

至顶网软件频道在高级搜索页面中创建并暴露托管属性(1)

在高级搜索页面中创建并暴露托管属性(1)

  • 扫一扫
    分享文章到微信

  • 扫一扫
    关注官方公众号
    至顶头条

SharePoint站点中的列表和文档库都具有其特定专有的属性。当爬网器索引这些容器中的内容时,这些定制的元数据都会被搜集起来。

作者:sunmoonfire 来源:blog 2007年9月2日

关键字: 搜索 SharePoint SharePoint2007 MOSS Office

  • 评论
  • 分享微博
  • 分享邮件
SharePoint站点中的列表和文档库都具有其特定专有的属性。当爬网器索引这些容器中的内容时,这些定制的元数据都会被搜集起来。管理员可以把这些自定义的元数据暴露给用户,以便可以在搜索中心中用于检索。在高级搜索页面中有一个属性选取器,可以选取这些托管属性。
我们可以在高级搜索页面的属性选取器中添加一个托管属性,只需要扩展一下附加在选取属性的高级搜索框上的XML即可。PropertyDef元素用于注册托管属性,PropertyRef元素作为ResultType元素的子节点用于使该属性可见。

用于添加一个托管属性到属性选取器的XML

<root xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
 
<LangDefs>
   
<LangDef DisplayName="Arabic" LangID="1"/>

   …
 
</LangDefs>
 
<Languages>
   
<Language LangRef="12"/>
   …
 
</Languages>
 
<PropertyDefs>
   
<PropertyDef Name="Path" DataType="text" DisplayName="URL"/>
   …
   
<PropertyDef Name="ProjectCode" DataType="text" 
    DisplayName
="Project Code"/>
 
</PropertyDefs>
 
<ResultTypes>
   
<ResultType DisplayName="All Results" Name="default">
     
<Query/>
       
<PropertyRef Name="Author" />
      …
      
<PropertyRef Name="ProjectCode" />
   
</ResultType>
   
<ResultType DisplayName="Documents" Name="documents">
      
<Query>IsDocument=1</Query>
      
<PropertyRef Name="Author" />
      …
   
</ResultType>
   
<ResultType DisplayName="Word Documents" Name="worddocuments">
     
<Query>FileExtension='doc' Or FileExtension='docx' 
       Or FileExtension='dot'
</Query>
     
<PropertyRef Name="Author" />
     
<PropertyRef Name="Company"/>
     …
   
</ResultType>
   …
 
</ResultTypes>
</root>

用于托管属性编程的引用和命名空间

我们必须使下面的样例代码运行在装有MOSS的服务器上。该代码需要引用到Microsoft.SharePoint.dll,Microsoft.Office.Server.dll,Microsoft.Office.Server.Search.dll和System.Web.dll。添加下列的namespace:

using Microsoft.Office.Server;
using Microsoft.Office.Server.Administration;
using Microsoft.Office.Server.Search;
using Microsoft.Office.Server.Search.Administration;

连接到共享服务SSP(Shared Services Provider)和搜索上下文

在编程访问受管理属性前,我们必须先引用SSP和搜索上下文。下面的代码展示了该过程。本例假设共享服务的名称为“SharedServices1”。

private ServerContext serverctx = null;
private SearchContext searchctx = null;
private void Form1_Load(object sender, EventArgs e)
{
  serverctx 
= ServerContext.GetContext("SharedServices1");
  searchctx 
= SearchContext.GetContext(serverctx);
}

获取列表的托管属性

托管属性是Schema类的实例 。该类包含一个名为AllManagedProperties的属性,可以通过循环读取并显示所有独立的ManagedProperty实例。GetMappings方法调用后会得到每个已爬网属性对应的托管属性。

Schema schema = new Schema(this.searchContext);
foreach (ManagedProperty prop in schema.AllManagedProperties)
{
    TreeNode node 
= treeViewManagedProperties.Nodes.Add(prop.Name);
    node.Tag 
= prop;
    
foreach (Mapping mapping in prop.GetMappings())
    {
        node.Nodes.Add(mapping.CrawledPropertyName);
    }
}
    • 评论
    • 分享微博
    • 分享邮件
    闂傚倸鍊风欢锟犲矗鎼淬劌绐楅柡鍥╁亹閺嬪酣鏌曡箛瀣仾濠殿垰銈搁弻鏇$疀鐎n亖鍋撻弽顓ㄧ稏闁跨噦鎷�

    婵犵數濮烽。浠嬪焵椤掆偓閸熷潡鍩€椤掆偓缂嶅﹪骞冨Ο璇茬窞闁归偊鍓涢悾娲⒑闂堟单鍫ュ疾濠婂嫭鍙忔繝濠傜墛閸嬨劍銇勯弽銊с€掗柟钘夊暣閺岀喖鎮滈埡鍌涚彋閻庤娲樺畝绋跨暦閸洖鐓涢柛灞剧矋濞堟悂姊绘担绛嬪殐闁搞劋鍗冲畷銏ゅ冀椤愩儱小闂佹寧绋戠€氼參宕伴崱妯镐簻闁靛牆鎳庢慨顒€鈹戦埥鍡椾簼婵犮垺锚铻炴俊銈呮噺閸嬪倹绻涢崱妯诲碍閻庢艾顦甸弻宥堫檨闁告挾鍠庨锝夘敆娓氬﹦鐭楁繛鎾村焹閸嬫捇鏌e☉娆愬磳闁哄本绋戦埞鎴﹀川椤曞懏鈻婄紓鍌欑劍椤ㄥ懘鎯岄崒鐐靛祦閹兼番鍔岄悞鍨亜閹烘垵顏╅悗姘槹閵囧嫰寮介妸褎鍣ョ紓浣筋嚙濡繈寮婚悢纰辨晣鐟滃秹鎮橀懠顒傜<閺夊牄鍔庣粻鐐烘煛鐏炶姤鍠橀柡浣瑰姍瀹曠喖顢橀悩铏钒闂備浇宕垫慨鎶芥⒔瀹ュ鍨傞柦妯猴級閿濆绀嬫い鏍ㄧ☉濞堟粓姊虹涵鍛【妞ゎ偅娲熼崺鈧い鎺嗗亾闁挎洩濡囧Σ鎰板籍閸繄顓洪梺缁樺姇瀵剙螖閸涱喚鍘搁梺鍓插亽閸嬪嫰鎮橀敃鍌涚厱閻庯綆鍋嗘晶顒傜磼閸屾稑绗ч柟鐟板閹煎湱鎲撮崟闈涙櫏闂傚倷绀侀幖顐も偓姘卞厴瀹曞綊鏌嗗鍛紱閻庡箍鍎遍ˇ浼村磿瀹ュ鐓曢柡鍥ュ妼婢ь垰霉閻樿秮顏堟箒闂佹寧绻傚Λ妤呭煝閺囥垺鐓冪憸婊堝礈濮樿泛钃熼柕濞у嫷鍋ㄩ梺缁樺姇椤曨參鍩㈤弴銏″€甸柨婵嗗€瑰▍鍥ㄣ亜韫囨稐鎲鹃柡灞炬礋瀹曢亶顢橀悢濂変紦

    重磅专题
    往期文章
    最新文章