【问题标题】:exclude a certain path from all user searches从所有用户搜索中排除某个路径
【发布时间】:2016-05-26 12:09:08
【问题描述】:

不幸的是,我们的存储库中到处都有一个名为 "_archive" 的特殊文件夹。 这个文件夹有它的用途。但是:在搜索内容/文档时,我们希望排除它以及 "_archive" 下的所有内容。

所以,我想要从所有用户搜索中排除路径及其成员。 fts 的语法很简单:

your_query AND -PATH:"//cm:_archive//*"

测试: https://www.docdroid.net/RmKj9gB/search-test.pdf.html 获取 pdf,将其放入您的仓库两次:

  • /some_random_path/search-test.pdf
  • /some_random_path/_archive/search-test.pdf

在节点浏览器中,一切都按预期工作:

TEXT:"HODOR" AND -PATH:"//cm:_archive//*"
= 1 result

TEXT:"HODOR"
= 2 results

所以,我的想法是编辑 search.get.config.xml 并将排除项添加到属性列表中:

<search>
    <default-operator>AND</default-operator>
    <default-query-template>%(cm:name cm:title cm:description ia:whatEvent
        ia:descriptionEvent lnk:title lnk:description TEXT TAG) AND -PATH:"//cm:_archive//*"
    </default-query-template>
</search>

但它没有按预期工作!只要我在搜索字段中使用“文本:”或“名称:”,排除似乎就会被忽略。

我还有什么其他选择?基本上只是想在使用默认查询模板后将排除添加到基本查询。

版本是 Alfresco Community 5.0.d

谢谢!

【问题讨论】:

  • 我在使用 PATH 查询时总是遇到性能问题,你不是吗?你的回购有多大?
  • wiki 说搜索会变慢,您可能希望增加缓存大小。但我还没有问题。我在具有 5gb 内容的开发环境中运行它

标签: search alfresco alfresco-share alfresco-webscripts


【解决方案1】:

我猜你搞错了查询模板的用途。看看Wiki

所以你基本上在做的就是以编程方式说我有一个关键字,我想将关键字与以下元数据字段匹配。

默认它将匹配 cm:name cm:title cm:description 等。这可以更改为自定义字段或在其他情况下更改为 ALL

因此,添加一个额外的 AND 或此处的任何内容都不起作用,因为这不是将要构建的实际查询。我可以继续详细介绍查询模板,但这对您没有任何好处。

在您的情况下,您需要修改 Alfresco 的 search.get 网页脚本和 search.lib.js 中名为 function getSearchResults(params) 的方法(其中 get 已导入)。

在方法结束时的某处,它将执行以下操作:

ftsQuery = '(' + ftsQuery + ') AND -TYPE:"cm:thumbnail" AND -TYPE:"cm:failedThumbnail" AND -TYPE:"cm:rating" AND -TYPE:"st:site"' + ' AND -ASPECT:"st:siteContainer" AND -ASPECT:"sys:hidden" AND -cm:creator:system AND -QNAME:comment\\-*';

只需添加您的查询路径即可。

【讨论】:

  • 我正在使用 5.0.d 社区 - 我在 search.get.js 中没有提到的方法
  • 方法在search.lib.js中,search.get.js做一个import。
  • 你正在开发什么版本?你确定这适用于 5.0.d 吗?
  • 在 5.0.d 中,这条线看起来有点不同。 ftsQuery = '(' + ftsQuery + ') AND -TYPE:"cm:thumbnail" AND -TYPE:"cm:failedThumbnail" AND -TYPE:"cm:rating" AND -TYPE:"st:site"' + ' AND -ASPECT:"st:siteContainer" AND -ASPECT:"sys:hidden" AND -cm:creator:system AND -QNAME:comment\\-*';
  • Pff @user1429166 你真的要去吗?使用总指挥官或其他东西并在 jar 文件中找到 search.lib.js。我们真的需要为你做你的工作吗.....在这种情况下,文件位于 alfresco-remote-api-5.0.d.jar
猜你喜欢
  • 2020-12-12
  • 1970-01-01
  • 2020-05-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-04-17
  • 2011-03-26
相关资源
最近更新 更多