使用"进行文本值搜索。"在搜索值

时间:2016-05-26 12:15:18

标签: mongodb

我收集了200个文件,包含20个字段。有几个字段有" - "和"。"然后是一个唯一的文件名字段。

更新

我转换了" - "到" _"而问题仍然存在。似乎"。"造成了大部分问题。我认为索引器在点上分裂,因此文件名被索引,扩展名被索引,但不是整个文件名+扩展名。

更新结束

以下是我所拥有的文件样本。 (注意:如果您使用此示例进行测试,它将快速返回,但在200万个文档上结果速度会发生变化)

{ 
    "FileName" : "NA2148-958-041114.PDF",
    "Customer" : "customer-958"
},
{ 
    "FileName" : "NA2149-958-041116.PDF",
    "Customer" : "customer-958"
},
{ 
    "FileName" : "NA2149-959-041118.PDF",
    "Customer" : "customer-959"
}

我在集合上创建了以下全文搜索。

  

db.test.createIndex({" $ **":" text"})

如果我对完整文件名进行全面搜索,则返回单个文档最多需要65秒。

  

db.test.find({$ text:{$ search:" \" NA2148-958-041114.PDF \""}})

如果我做一个解释()

  

db.test.find({$ text:{$ search:&#34; \&#34; NA2148-958-041114.PDF \&#34;&#34;}})。explain()< / p>

"parsedTextQuery" : {
                "terms" : [ 
                    "041114", 
                    "958", 
                    "na2148", 
                    "pdf"
                ],
                "negatedTerms" : [],
                "phrases" : [ 
                    "NA2148-958-041114.PDF"
                ],
                "negatedPhrases" : []
            }

我期待解释中的术语与短语相同,并使用该值搜索索引。


如果我执行以下搜索,它将在大约15秒内返回文档。

  

db.test.find({$ text:{$ search:&#34; NA2148-958-041114.PDF&#34;}})。explain()***(没有&#34;)** )

{
    "terms" : [ 
        "041114", 
        "958", 
        "na2148", 
        "pdf"
    ],
    "negatedTerms" : [],
    "phrases" : [],
    "negatedPhrases" : []
}


如果我执行以下搜索,则会在1秒内返回文档。

  

db.test.find({$ text:{$ search:&#34; 041114&#34;}})

{
    "terms" : [ 
        "041114"
    ],
    "negatedTerms" : [],
    "phrases" : [],
    "negatedPhrases" : []
}

我怀疑索引步骤是将值拆分,因此整个文件名只有块没有索引。
有没有办法让搜索只使用短语而不是在被&#34;&#34;包围时进行搜索。或者让索引步骤不在#34; - &#34;上进行标记化。或&#34;。&#34;在文件名中?

注意:我已经读过使用$ default_language索引:&#34; none&#34;将使用简单的tokernizer,但这并没有改变结果。

关于这个主题的任何帮助或指示都会很棒。

添加&#34; \&#34;时的结果如下在&#34; - &#34;前面在explain()或速度方面没有什么不同。

  

db.text.find({$ text:{$ search:&#34; \&#34; NA2148 \ -958 \ -041114 \ .PDF \&#34;&#34;}})。解释()

{
    "terms" : [ 
        "041114", 
        "958", 
        "na2148", 
        "pdf"
    ],
    "negatedTerms" : [],
    "phrases" : [ 
        "NA2148-958-041114.PDF"
    ],
    "negatedPhrases" : []
}

0 个答案:

没有答案