gpt4 book ai didi

lucene - 使用通配符搜索内容管理器时出错

转载 作者:行者123 更新时间:2023-12-02 11:31:15 24 4
gpt4 key购买 nike

我注意到,如果我搜索某些短语,Tridion Content Manager 会出现以下错误

Unable to get the list of search results.
Unable to process the Search Request. Invalid search query: (*out*) AND RepositoryId:tcm\:0\-4\-1 AND OrganizationalItemAncestorIds:tcm\:*\-135625\-2. maxClauseCount is set to 10240
org.apache.lucene.search.BooleanQuery$TooManyClauses: maxClauseCount is set to 10240
at org.apache.lucene.search.BooleanQuery.add(BooleanQuery.java:136)
at org.apache.lucene.search.BooleanQuery.add(BooleanQuery.java:127)
at org.apache.lucene.search.ScoringRewrite$1.addClause
[...and so on]

在上面的示例中,我正在搜索短语*out*。当我搜索短语 *a* 和各种其他较小的通配符查询时,它也会失败。如果我将搜索限制为仅项目标题,out* 工作正常,而 *out* 工作正常。我是否使用“所有出版物”或特定文件夹进行搜索并不重要。即使我将搜索结果限制为最小值(50)也没关系。

也许这与返回结果的数量有关?

完全相同的搜索在 Tridion 5.3 上运行良好,我认为它没有使用 lucene?

关于如何解决这个问题有什么想法吗?

最佳答案

由于索引和搜索的方式,Lucene 不允许使用前导通配符(Tridion 的 R5.3 版本使用了允许使用前导通配符的 Verity 实现)。前导通配符有效地导致索引扫描每个术语以查找匹配项,而不是使用更典型和高性能的方法使用索引来查找匹配项(请参阅 Lucene FAQ )

您可以通过调用QueryParser.setAllowLeadingWildcard(true)来启用此功能,但我强烈建议在大多数情况下不要这样做。

更好的方法可能是过滤需要前导通配符的术语,而不是将它们传递到查询中(如果前导通配符术语是唯一要搜索的术语,则不太可行)

此外,Lucene 还提供 ReverseStringFilter ,一个过滤器,它也反向索引所有术语。这可能是创建索引以启用前导通配符搜索的最佳方式。

马上,我认为它们都不能真正处理像 *out* 这样的查询。将数据表示为 N-Gram 可能是一种选择(请参阅 NGramTokenizer)。

关于lucene - 使用通配符搜索内容管理器时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13628058/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com