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

时间:2014-07-08 15:57:54

标签: mongodb full-text-search mongodb-java

(MongoDB全文搜索)

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

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

DBCursor cursor = users.find(textSearch);

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

如果是这样,请告诉我如何在 Java 中进行操作。

谢谢。

1 个答案:

答案 0 :(得分:10)

如果要索引单个字段并搜索它,那么默认情况下它就是这样。假设您想要对字段companyName编制索引。当您对此集合执行$text搜索时,将仅使用companyName字段中的数据,因为您只在索引中包含该字段。

现在是第二种情况,您的$text索引包含多个字段。在这种情况下,您不能将搜索限制为仅查找从特定字段索引的值。 $text索引在集合级别构建,集合最多可以有一个$text索引。在这种情况下,您限制搜索特定字段的选项可能是使用regex

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