(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 中进行操作。
谢谢。
答案 0 :(得分:10)
如果要索引单个字段并搜索它,那么默认情况下它就是这样。假设您想要对字段companyName
编制索引。当您对此集合执行$text
搜索时,将仅使用companyName
字段中的数据,因为您只在索引中包含该字段。
现在是第二种情况,您的$text
索引包含多个字段。在这种情况下,您不能将搜索限制为仅查找从特定字段索引的值。 $text
索引在集合级别构建,集合最多可以有一个$text
索引。在这种情况下,您限制搜索特定字段的选项可能是使用regex
。
MongoDB可以灵活地满足其他方案的要求,但如果您的应用程序是大量搜索驱动的,并且您主要使用全文搜索引擎来查找带有丰富查询的关键字文档,那么您也可以使用其他技术进行评估。句法。 ElasticSearch可能是替代方案。这实际上取决于应用程序的类型和您的需求。