从所有用户搜索中排除特定路径
exclude a certain path from all user searches
不幸的是,我们的存储库中到处都有一个名为 "_archive" 的特殊文件夹。
这个文件夹有它的用途。但是:当搜索 content/documents 时,我们希望排除它以及 "_archive".
下的所有内容
所以,我想要的是从所有用户搜索中排除路径及其成员。 fts 的语法很简单:
your_query AND -PATH:"//cm:_archive//*"
测试:
https://www.docdroid.net/RmKj9gB/search-test.pdf.html
获取 pdf,将其放入你的 repo 两次:
- /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>
但它没有按预期工作!只要我在搜索字段中使用 'text:' 或 'name:',排除项似乎就会被忽略。
我还有什么其他选择?基本上只是想在使用默认查询模板后将排除项添加到基本查询中。
版本是 Alfresco Community 5。0.d
谢谢!
我想您误解了查询模板的用途。看看 Wiki.
所以您基本上所做的是以编程方式说我有一个关键字,我想将关键字与以下元数据字段匹配。
默认会匹配cm:name cm:title cm:description等。这可以更改为自定义字段或在其他情况下更改为全部.
因此,在此处添加额外的 AND 或任何内容都不起作用,因为这不是将要构建的实际查询。我可以继续详细了解查询模板,但这对您没有任何好处。
在您的情况下,您需要修改 Alfresco 的 search.get 网络脚本和 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\-*';
只需添加您要查询的路径即可。
不幸的是,我们的存储库中到处都有一个名为 "_archive" 的特殊文件夹。 这个文件夹有它的用途。但是:当搜索 content/documents 时,我们希望排除它以及 "_archive".
下的所有内容所以,我想要的是从所有用户搜索中排除路径及其成员。 fts 的语法很简单:
your_query AND -PATH:"//cm:_archive//*"
测试: https://www.docdroid.net/RmKj9gB/search-test.pdf.html 获取 pdf,将其放入你的 repo 两次:
- /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>
但它没有按预期工作!只要我在搜索字段中使用 'text:' 或 'name:',排除项似乎就会被忽略。
我还有什么其他选择?基本上只是想在使用默认查询模板后将排除项添加到基本查询中。
版本是 Alfresco Community 5。0.d
谢谢!
我想您误解了查询模板的用途。看看 Wiki.
所以您基本上所做的是以编程方式说我有一个关键字,我想将关键字与以下元数据字段匹配。
默认会匹配cm:name cm:title cm:description等。这可以更改为自定义字段或在其他情况下更改为全部.
因此,在此处添加额外的 AND 或任何内容都不起作用,因为这不是将要构建的实际查询。我可以继续详细了解查询模板,但这对您没有任何好处。
在您的情况下,您需要修改 Alfresco 的 search.get 网络脚本和 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\-*';
只需添加您要查询的路径即可。