【问题标题】:Sharepoint Search Property WeightingSharepoint 搜索属性权重
【发布时间】:2009-06-16 16:24:52
【问题描述】:

我正在使用此处列出的代码:

http://msdn.microsoft.com/en-us/library/ms553069.aspx

在设置属性后添加了附加行作为对 .update() 的调用以保存更改,但即使权重为 10,000,我的属性的搜索结果仍位于底部,尤其是在标题下方.是否还有其他一些事情需要做才能使权重传播?

我还尝试将标题、作者和文件名设置为 0,将属性(关键字)设置为 9999,并将属性的长度规范化设置为 0。结果略有变化,但使用匹配的关键字进行搜索属性仍然不匹配。

所有测试都在之后完全爬网完成,重置 IIS,并回收共享服务应用程序池。

我可以给你任何你可能要求的额外信息。

谢谢, 斯蒂芬

更新 (6-19-09):为此增加了 500 的赏金。在线提供的有关此功能的信息很少,显然一个好的答案将为互联网社区提供巨大的服务。它可能也可以为我节省一周的时间:)

更新 2 (6-19-09):架构本质上是这样的:带有添加文本字段“关键字”的 OOB 共享点文档内容类型。附加到 ows_keywords(Text) 的托管属性。

更新 3 (6-19-09):Codeplex 的 Sharepoint Search Bench 对搜索有很大帮助。

更新 4 (6-19-09):我已经找到了一个解决方案,该解决方案涉及创建许多(现在 5 个)具有相同爬网属性的更多托管属性。每个权重都设置为不寻常的值(例如 9999)。这些足以将关键字结果提升到顶部。虽然不太理想。仍在寻找解决方案。

更新 4 中的解决方案是我最终得到的。正如 Lars 评论的那样,搜索不是很灵活,尽管对属性权重进行了调整,但效果并不总是您所期望的。

【问题讨论】:

  • 您能否展示一个架构的小样本(相关列等)。托管属性映射到的列是否用作列表的标题字段?
  • @dlamblin 我现在无法访问服务器,但请将您的建议添加为问题,以便我可以将其标记为正确的答案。
  • @Colin 我不确定您在架构方面的要求是什么,更新后的描述是否涵盖了它?

标签: sharepoint optimization search properties weighting


【解决方案1】:

只有当您搜索属性中存在的关键字时,属性才会对排名得分产生积极影响。对于任何其他查询,权重都没有任何影响!例如。在搜索关键字“SharePoint Search”时,标题属性权重确保标题中包含这些关键字的文档的排名得分得到提升。但是标题中没有任何这些关键字的文档不会受到标题权重的提升。这适用于文本类型的所有托管属性。

【讨论】:

  • 这是真的,但我的问题是能够在找到匹配项时使特定属性具有决定性。我意识到,当在属性中找不到匹配项时,权重不起作用。这没有任何意义。
  • 好的,如果我理解正确的话,您基本上希望您的财产是唯一影响排名得分的因素?
  • 没有。我只是希望它是决定性的。任何具有包含搜索关键字的“关键字”属性值的内容都位于顶部。其他一切都正常订购。
  • 嗯,恐怕您的做法是增加您的财产权重并降低对其他人的权重是影响排名的唯一方法。遗憾的是,在相关性调整方面,SharePoint 搜索引擎不是很灵活。这就是大型企业客户转向 FAST Search 的原因之一,FAST Search 更灵活,但当然也更昂贵。
  • 不完全是我想要的,但我已经完成了。我很欣赏你的坚持。欢迎来到 1900。
【解决方案2】:

更改属性的权重不需要重新抓取,只需重置搜索服务。

在网上找到这个:

除了设置托管属性的权重之外,映射到托管属性的已爬网属性还必须启用“在搜索索引中包含此属性的值”复选框。

编辑:在这里找到它:Larry Kuhn's blog

【讨论】:

    【解决方案3】:

    您是否尝试过仅使用 0 到 1 范围内的权重?例如,将所有其他属性权重设置为 0.2,并将关键字设置为 0.8。在这些方面,我在使用 Lucene 时遇到了一些麻烦,而且与数量级有关。

    此外,如果它从未在该属性字段中添加命中结果(尝试添加 xyzzy 关键字或其他内容并搜索它),那么它可能根本与权重无关,而是与是否考虑关键字有关您的搜索。

    【讨论】:

    • SharePoint 允许权重大于 1。开箱即用 - Author、Filename 和 Title 属性分别具有 8.215、29.43 和 75.855。
    • Lucene 也是如此,但是在使用 LukeAll 测试我的搜索时,我发现 1000 范围内的权重比 100 范围内的权重影响小。最后,当将所有权重置于 0 和 1 之间时,我得到了更一致的结果。我真的无法解释为什么,我只是在摆弄设置。
    【解决方案4】:

    假设 .update() 调用是在 main() 结束时进行的,我是否正确?如果没有,请尝试,如果是,请确保程序正在运行。我还假设 strPropertyName 是您想要的。除此之外,我真的帮不了你。

    【讨论】:

    • 更新了摘要。感谢您的尝试。
    猜你喜欢
    • 1970-01-01
    • 2011-05-05
    • 1970-01-01
    • 1970-01-01
    • 2019-06-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多