Azure认知搜索:无法搜索以特定术语开头的文本

kq0g1dla  于 2023-08-07  发布在  其他
关注(0)|答案(1)|浏览(117)

我在使用Azure认知搜索时遇到问题。我在搜索索引中有一个“name”字段,我希望找到仅以搜索词开头的文本,而不仅仅是文本中的任何内容。我已经尝试使用默认分析器和关键字分析器,但我似乎不能得到我想要的结果。
让我给予你一个我的数据的例子:
城市红红1红2
在本例中,我只想得到“red 1”和“red 2”作为结果。但我尝试的搜索查询到目前为止还没有成功。
当我使用默认分析器时,它返回所有内容。另一方面,使用关键字分析器,我根本得不到任何结果。
以下是我使用的搜索词:
“Re*”
正则表达式:“/Re*./i”
不幸的是,这两种方法都没有给我想要的结果。我以为在关键字分析器中使用正则表达式就可以了,但是没有成功。
有没有人能帮我找出我可能做错了什么?是否有其他方法或不同的搜索查询语法,我应该使用,以获得我需要的结果?
我真的很感激你能提供的任何帮助。提前感谢!
编辑:请求选项:
SearchQueryType.Full,
SearchMode = SearchMode.Any(我也试过All)

u0sqgete

u0sqgete1#

正如@giulianob所链接的,你需要使用一个EdgeNGramTokenFilter沿着keyword_v2 tokenizer来获得结果。
参考链接https://learn.microsoft.com/en-us/azure/search/search-query-partial-matching#tune-query-performance
编辑:实际上,当搜索短语之间有空格时,这不起作用。

{
"fields": [
  {
  "name": "accountNumber",
  "analyzer":"myCustomAnalyzer",
  "type": "Edm.String",
  "searchable": true,
  "filterable": true,
  "retrievable": true,
  "sortable": false,
  "facetable": false
  }
],

"analyzers": [
  {
  "@odata.type":"#Microsoft.Azure.Search.CustomAnalyzer",
  "name":"myCustomAnalyzer",
  "charFilters":[],
  "tokenizer":"keyword_v2",
  "tokenFilters":["lowercase", "my_edgeNGram"]
  }
],
"tokenizers":[],
"charFilters": [],
"tokenFilters": [
  {
  "@odata.type":"#Microsoft.Azure.Search.EdgeNGramTokenFilterV2",
  "name":"my_edgeNGram",
  "minGram": 2,
  "maxGram": 25,
  "side": "front"
  }
]
}

字符串

相关问题