簡體   English   中英

貓鼬加快了對多個字段的搜索

[英]Mongoose speed up the search on multiple fields

我正在研究貓鼬文檔的搜索功能,其中我必須搜索超過250,000個文檔。 在此功能中,我必須在多個字段上添加搜索索引。 在文檔中,某些字段是字符串類型,某些字段是多級對象。 我已經索引了所有可能的字段。

在本地,我有100,000個文檔,當我搜索它們時大約花費了300-400毫秒。 但是,當我在服務器上搜索它們時,大約花了10到15秒才能做出響應。

搜索查詢是基於條件的,但是我共享一個小代碼段。

   $and(

{
    $or:[
        {'field1': {$regex: re }},
        {'field2': {$regex: re }},
        {'level1.level2.value': {$regex: re }}
    ]
},
{
    $and:[ 
        {
            lowAge: {$lte: parseInt(age)}
        },
        {
            highAge: {$gte: parseInt(age)}
        },
        {
            $or:[
                {
                   gender:gender
                },
                {
                   gender:"N/A"
                }
            ]
        }
    ]
}
 )

有人可以建議我如何加快服務器上的過程。

為了進一步提高速度,可以使用文本索引。

但是文本索引附帶以下存儲要求和性能成本

  • 文本索引可能很大。 對於每個插入的文檔,每個索引字段中的每個唯一后詞形詞都包含一個索引條目。
  • 構建文本索引與構建大型多鍵索引非常相似,並且比在相同數據上構建簡單的有序(標量)索引要花更長的時間。 在現有集合上構建較大的文本索引時,請確保對打開的文件描述符有足夠高的限制。 請參閱建議的設置。
  • 文本索引將影響插入吞吐量,因為MongoDB必須在每個新源文檔的每個索引字段中為每個唯一的詞干詞添加一個索引條目。
  • 此外,文本索引不存儲短語或有關文檔中單詞接近程度的信息。 結果,當整個集合放入RAM中時,短語查詢將更有效地運行。

請參閱以下參考

https://docs.mongodb.com/manual/core/index-text/

https://www.tutorialspoint.com/mongodb/mongodb_text_search.htm

希望能幫助到你!

暫無
暫無

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

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