如何根据正则表达式匹配计数对 mongodb 正则表达式搜索查询结果进行排序 [英] How can I sort mongodb regex search query results based on regex match count

查看:45
本文介绍了如何根据正则表达式匹配计数对 mongodb 正则表达式搜索查询结果进行排序的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我不知道如何根据最佳"匹配对查询结果进行排序.

I can't figure out how to sort query results based on the "best" match.

这是一个简单的例子,我有一个包含城市/邮政编码夫妇列表的区域"集合.

Here's a simple example, I have a "zone" collection containing a list of city/zipcode couples.

如果我使用and"关键字通过正则表达式搜索多个单词:

If I search several words through the regex using the "and" keyword like that :

"db.zones.find({$or : [ {ville: /ROQUE/}, {ville: /ANTHERON/}] })"

结果不会按最佳匹配"排序.

Results won't be ordered by "best match".

对此我还有什么其他解决方案?

What other solutions do I have for that ?

推荐答案

我最终使用 ElasticSearch 搜索引擎做这个查询:

I ended up using ElasticSearch search engine do this query :

@zones = Zone.es.search(
    body: {
      query: {
        bool: {
          should: [
            {match: {city: search}},
            {match: {zipcode: search.to_i}}
          ]
        }
      },
      size: limit
    })

其中搜索是视图发送的搜索参数.

Where search is a search param sent by view.

带有 Selectize 插件的 ElasticSearch

这篇关于如何根据正则表达式匹配计数对 mongodb 正则表达式搜索查询结果进行排序的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆