簡體   English   中英

Mongoose,無法使用 default_language 創建文本索引:'none'

[英]Mongoose, cannot create text index with default_language: 'none'

我嘗試在 mongoose 中使用$text$search創建搜索功能,但是當查詢遇到 mongodb english stop words時它卡住了。 我嘗試將我的 default_language 更改為 none 以忽略stop words列表,但后來我意識到我無法更改 default_language。

我想知道我的貓鼬總是使用 default_language: english 創建索引的方式,即使我直接使用default_language: 'none'

這是我的代碼:

kataSchema.index({ kata: "text" }, { default_language: 'none' });

然后當我打開 mongo shell 並輸入 db.katas.getIndexes() 時,它總是向我顯示:

[
    {
        "v" : 2,
        "key" : {
            "_id" : 1
        },
        "name" : "_id_"
    },
    {
        "v" : 2,
        "key" : {
            "_fts" : "text",
            "_ftsx" : 1
        },
        "name" : "kata_text",
        "background" : true,
        "weights" : {
            "kata" : 1
        },
        "default_language" : "english",
        "language_override" : "language",
        "textIndexVersion" : 3
    }
]

我還嘗試刪除 mongo shell 中的索引並再次運行我的代碼,但它仍然使用英語作為其 default_language。

我想念什么嗎? 我已經到處尋找它,但仍然找不到問題。 謝謝你的建議。

貓鼬版本:“^5.10.0”

我猜問題來自.index本身.. 使用createIndexes代替。

在您模型的架構中,試試這個:

.
.
.
const Kata = mongoose.model('Kata', kataSchema);
Kata.createIndexes({ kata: "text" }, { default_language: 'none' });

Mongoose 5.10.0和 MongoDB 4.4.0有完全相同的問題:

contentSchema.index(
{
    title: "text",
    shortDescription: "text",
    description: "text",
},
{
    weights: {
        title: 10,
        shortDescription: 5,
        description: 1
    },
    default_language: "german",
    name: "SearchIndex"
});

weightsdefault_language被忽略了。 更新貓鼬:

npm update mongoose

Mongoose 現在是5.10.16版, default_language權重都可以正常工作,無需任何代碼修改。

在應用新索引之前,您必須先刪除錯誤創建的索引。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM