在MongoDB全文搜索中搜索特定字段中的值

man*_*jpt 7 full-text-search mongodb mongodb-java

(MongoDB全文搜索)

您好,我已经在索引中添加了一些字段,这就是我搜索search_keyword的方法.

BasicDBObject search = new BasicDBObject("$search", "search_keyword"); 
BasicDBObject textSearch = new BasicDBObject("$text", search);

DBCursor cursor = users.find(textSearch);
Run Code Online (Sandbox Code Playgroud)

我不希望 在索引中指定的所有字段中搜索search_keyword.*是否有任何方法可以指定要在索引的特定字段中搜索的search_keyword?*

如果是这样,请告诉我如何用Java做到这一点.

谢谢.

小智 13

如果要索引单个字段并搜索它,则默认情况下它的工作方式.让我们说你想索引该字段companyName.当您$text对此集合执行搜索时,companyName将仅使用该字段中的数据,因为您只在索引中包含该字段.

现在是第二种情况,您的$text索引包含多个字段.在这种情况下,您不能将搜索限制为仅查找从特定字段索引的值.该$text指数构造的集合或者集合最多只能有一个$text索引.在这种情况下,您可以选择使用限制搜索特定字段的选项regex.

MongoDB可以灵活地满足其他场景的要求,但如果您的应用程序是大量搜索驱动的,并且您主要使用全文搜索引擎来按关键字查找带有丰富查询语法的文档,那么您也可以使用其他技术进行评估.ElasticSearch可能是这里的替代品.这实际上取决于应用程序的类型和您的需求.

  • 这就是我一直在寻找的。这确实是一个非常有用的信息。 (2认同)