我无法弄清楚如何根据“最佳”匹配对查询结果进行排序。
这是一个简单的例子,我有一个“区域”集合,其中包含城市/邮政编码夫妇列表。
如果我使用“and”关键字在正则表达式中搜索多个单词,请执行以下操作:
"db.zones.find({$or : [ {ville: /ROQUE/}, {ville: /ANTHERON/}] })"
结果不会以“最佳匹配”排序。
我还有其他解决方案吗?
答案 0 :(得分:1)
您可以尝试使用http://docs.mongodb.org/manual/reference/operator/query/text/#match-any-of-the-search-terms
db.zones.ensureIndex( { 'ville' : 'text' } ,{ score: {$meta:'textScore'}})
db.zones.find(
{ $text: { $search: "ROQUE ANTHERON"}},
{ score: { $meta: "textScore" } }
).sort( { score: { $meta: "textScore" } } )
结果:
{
"_id" : ObjectId("547c2473371ea419f07b954c"),
"ville" : "ANTHERON",
"score" : 1.1
}
{
"_id" : ObjectId("547c246f371ea419f07b954b"),
"ville" : "ROQUE",
"score" : 1
}
来自文档
如果搜索字符串是以空格分隔的字符串,则为$ text运算符 对每个术语执行逻辑OR搜索并返回文档 包含任何条款。
你必须使用mongodb 2.6
答案 1 :(得分:1)
我最终使用ElasticSearch搜索引擎执行此查询:
protected override void OnPause()
{
base.OnPause();
AndroidEnvironment.UnhandledExceptionRaiser -= OnException_Occured;
}
搜索是视图发送的搜索参数。