【问题标题】:Fuzzy search in full text search using mongoosastic使用 mongoosastic 在全文搜索中进行模糊搜索
【发布时间】:2020-05-06 05:20:45
【问题描述】:

我一直在开发一个具有搜索功能的网站,该功能将查询与 MongoDB 中存在的各种文章相匹配。目前 mongoDB 不支持模糊搜索,这是我想要的搜索功能。为此,我发现 Elasticsearch 最适合处理这类问题。为此,我为 node.js 使用了 mongoosastic 客户端。我能够保存数据项并搜索查询,但如果其中存在任何拼写错误,则无法搜索。如何自定义查询以帮助查找文本,即使有一些拼写错误或缺少单词。

const mongoose     = require('mongoose');
const mongoosastic = require('mongoosastic');

mongoose.connect('mongodb://localhost:27017/mongosync'); 

var UserSchema = new mongoose.Schema({
    name: String
  , email: String
  , city: String
});

UserSchema.plugin(mongoosastic, {
    "host": "localhost",
    "port": 9200
}, {hydrate:true, hydrateOptions: {lean: true}});

var User = mongoose.model('user', UserSchema);

// User.createMapping((err, mapping) => {
//     console.log('mapping created');
// });

// var newUser = new User({
//     name: 'Abhishek',
//     email: 'abhishek.patel@company.com',
//     city: 'bhopal'
// });

// newUser.save((err) => {
//     if(err) {
//         console.log(err);
//     }
//     console.log('user added in both the databases');
// })

// newUser.on('es-indexed', (err, result) => {
//     console.log('indexed to elastic search');
// });

User.search(
    {query_string: {query: "abheshek"}}, 
    function(err, results) {
    if(err){
        console.log('ERROR OCCURED');
    } else {
        console.log(results);
    }
});

【问题讨论】:

    标签: node.js mongodb mongoosastic


    【解决方案1】:

    我认为这会有所帮助:)

    Place.search({
      match: {
        name: {
          query: q,
          fuzziness: "auto"
        }
      }
    }, (err, results) => {
      if (err) return next(err);
    
      const data = results.hits.hits.map(hit => hit);
    
      // return res.json(data);
      return res.status(200).json({locations: data});
    });
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-11-20
      • 1970-01-01
      • 1970-01-01
      • 2012-07-29
      • 2016-01-18
      • 2021-06-11
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多