lucene 来自mongot的远程错误::原因:查询已在内部扩展为太多子查询:maxClauseCount设置为1024

bgibtngc  于 2022-11-07  发布在  Lucene
关注(0)|答案(1)|浏览(173)

我正在使用MongoDB的Atlas Search $search聚合管道阶段。我遇到以下错误:
Remote error from mongot :: caused by :: query has expanded into too many sub-queries internally: maxClauseCount is set to 1024
这似乎是因为Lucene的[maxClauseCount][1]变量的默认值设置为1024。
下面是我的代码:

const { Restaurant } = require('../models');

Restaurant.aggregate({
  $search: {
    index: 'default',
    compound: {
        should: {
           {
             autocomplete: {
               query: filter.searchText,
               path: 'name',
             },
           }

          ..._.map(mealMatchedRestaurantIds, (id) => {
            return {
              equals: {
                path: '_id',
                value: mongoose.Types.ObjectId(id),
              },
            }
          })
         },

         minimumShouldMatch = 1;
    }
  }
});

我正在从mealMatchedRestaurantIds数组动态生成'equals'子句。该数组的长度超过了1024,这将导致maxClauseCount值被超过。[1]:https://github.com/apache/lucene/search?q=maxClauseCount
MongoDB是否提供了API来覆盖这个变量的值?或者有没有更好的方法来设计这个搜索查询(而不是将它分块成多个查询)?

yqkkidmi

yqkkidmi1#

如果你在一个复合查询中有超过1024个词,这是一个lucene布尔查询,你需要寻找一个不同的查询。如果searchTerm可以小于1024个词,你会没事的。

相关问题