Node.js MongoDb全文搜索和条件
我尝试在mongodb中使用文本索引:Node.js MongoDb全文搜索和条件,node.js,mongodb,mongoose,full-text-search,Node.js,Mongodb,Mongoose,Full Text Search,我尝试在mongodb中使用文本索引: {$text:{$search:'sport hockey'}} 是通过短语“sport”或“hockey”搜索的用途或条件。例如,结果可以是以下标题列表: 今天做点运动 运动就是曲棍球 曲棍球运动员 最相关的文档位于第二个位置(实际上我想排除除此之外的所有其他结果:“运动就是曲棍球”)。 是否可以在$text中使用和条件 引号不合适,因为{$text:{$search:“\'sport hockey\”“}}使用精确匹配搜索。文本搜索不提供开箱即用。
{$text:{$search:'sport hockey'}}
是通过短语“sport”或“hockey”搜索的用途或条件。例如,结果可以是以下标题列表:
- 今天做点运动
- 运动就是曲棍球
- 曲棍球运动员
引号不合适,因为
{$text:{$search:“\'sport hockey\”“}}
使用精确匹配搜索。文本搜索不提供开箱即用。但有两种可能的解决办法
尝试在输出中包含textScore,然后按其排序以获得最相关的文档(也可以使用limit来获得前n个相关文档) 使用如下 db.your_collection.find({$text:{$search:''sport''hockey'}) 必须包含“文本”类型的搜索词
对于再次访问此线程的任何人,可以使用以下查找查询实现所需的搜索条件“和”
{$text:{$search:"\"sport\" \"hockey\""}}
注意不同的单词是如何转义的
在NodeJS中,可以执行以下操作来创建“AND”条件的desire搜索文本
searchText = '"' + userInput.split(" ").join('" "') + '"';
然后
searchText = '"' + userInput.split(" ").join('" "') + '"';
collectionObj.find({$text:{$search:searchText}})