创建queryString$search管道,它不仅通过MongoDB atlass搜索中的单词边界返回结果



我的目标是在MongoDB中创建一个搜索管道,返回多个字段的结果。

我的索引:

{
"analyzer": "lucene.standard",
"searchAnalyzer": "lucene.standard",
"mappings": {
"dynamic": false,
"fields": {
"description": {
"analyzer": "lucene.standard",
"type": "string"
},
"name": {
"type": "string"
}
}
}
}

我的$search管道阶段:

{
$search: {
index: 'lucene.standard',
queryString: {
defaultPath: 'name',
query: `name:"${query}" OR description:"${query}"`,
},
}
}

这是有效的,但仅当我搜索完整单词时。例如,如果具有描述为fooBar的文档。我的问题是,如果我查询foo-我得到没有结果。仅当我查询完整单词fooBar时才有效。

我该如何解决这个问题——也许是使用另一个索引定义?

以前的解决方案对您有效吗?如文件中所定义:

自动完成运算符执行搜索包含不完整输入字符串中的一系列字符。

{
"analyzer": "lucene.standard",
"searchAnalyzer": "lucene.standard",
"mappings": {
"dynamic": false,
"fields": {
"description": {
"type": "autocomplete"
},        
"name": {
"type": "autocomplete"
}        
}
}
}

你的搜索阶段也有点偏离。也许试试复合运算符:

{
$search: {
"compound": {
"should": [{
"autocomplete": {
"query": "foo",
"path": "name"
},
"autocomplete": {
"query": "foo",
"path": "description"
}
}]
}
}
}

最新更新