不幸的是,我们的存储库到处都有一个名为“_ archive”的特殊文件夹。 这个文件夹有它的目的。但是:在搜索内容/文档时,我们要将其排除在“_ archive”下面的每个内容中。
所以,我想要的是从所有用户搜索中排除路径及其成员。使用fts语法很简单:
your_query AND -PATH:"//cm:_archive//*"
测试: https://www.docdroid.net/RmKj9gB/search-test.pdf.html 拿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>
但它不能按预期工作!只要我在搜索字段中使用“text:”或“name:”,就会忽略排除。
我还有其他选择吗?基本上只是想在使用默认查询模板后将排除添加到基本查询。
版本是Alfresco Community 5.0.d
谢谢!
答案 0 :(得分:3)
我猜你错了什么查询模板的意思。看看Wiki。
所以你基本上做的是以编程方式说我有一个关键字,我想将关键字与以下元数据字段相匹配。
默认值匹配 cm:名称cm:标题cm:说明等。可以将其更改为自定义字段,或者在其他情况下更改为所有。
因此,添加一个额外的AND或此处的任何不起作用,导致这不是将要构建的实际查询。我可以继续了解有关查询模板的更多信息,但这对您没有任何帮助。
在你的情况下,你需要修改Alfresco的search.get webscript和search.lib.js中的 function getSearchResults(params)方法(获取导入)。
在方法结束时的某个地方,它将执行以下操作:
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\\-*';
只需添加您的查询路径,即可。