azure - 如何在 Azure 搜索中编写“以”结尾的正则表达式
问题描述
在 Azure 搜索中,在具有“12-10-3”或“30-843-44”等值的字段上,我设置了一个自定义标记器以用空字符串替换破折号。
我现在想做一个“以”结尾的正则表达式搜索,但不能让它完全满足我的要求。
例如,要查找以 3 结尾的代码,我尝试过:
searchMode=any&queryType=full&search=code:/(.*)3/
例如,这会返回“12-10-3”,但也会返回“30-843-44”之类的。
然后我尝试了:
searchMode=any&queryType=full&search=code:/(.*)3[^<0-9>]*/
但这似乎给出了相同的结果。我一直在尝试通过 Azure 搜索文档中引用的正则表达式语法。
当我在“123-456-78”上测试我的标记器时,它似乎正在工作,所以我不明白为什么正则表达式搜索不能正常工作。
"tokens": [
{
"token": "12345678",
"startOffset": 0,
"endOffset": 10,
"position": 0
}
]
有任何想法吗?
更新:
分词器在 C# 中的应用如下:
var myIndexDefinition = new Index()
{
Name = "MyIndex",
Analyzers = new[]
{
new CustomAnalyzer
{
Name = "code_with_dash_analyzer",
Tokenizer = TokenizerName.Keyword,
CharFilters = new CharFilterName [] { "dash_to_empty_mapper" }
}
},
CharFilters = new List<CharFilter>
{
new MappingCharFilter("dash_to_empty_mapper", new[] { "- => " })
},
Fields = new[]
{
// Field with the dash in the values
new Field("codes", DataType.String) { IsRetrievable = true, IsSearchable = true, IsSortable = true, IsFilterable = true, IsFacetable = true },
//.... other field definitions....
}
}
解决方案
根据您的描述,仅根据我的经验,我猜您的问题可能是由您的自定义标记器引起的,我不知道如何实施。
但是,如果不使用自定义标记器,您可以尝试的 lucene 正则表达式应该可以工作:
/([0-9]+\-?)+[0-9]*3/
希望能帮助到你。
推荐阅读
- amazon-web-services - EB CLI - 如何抑制代码提交提示“您希望继续使用 CodeCommit?”
- twitter-bootstrap - 如何使用 Bootstrap Vue 在移动设备上将按钮大小从默认更改为 sm?
- sql - 试图弄清楚如何按季度显示计算结果
- angular - 将现有的 angular 5 项目转换为 ionic 3 项目
- log4j2 - 如何将 Log4j 2 与 flink 应用程序一起使用
- python - 客户端服务器端实时对象检测
- jquery - 使用两个数组的 Ajax 请求
- ios - 像whatsapp一样在tableview滚动上显示日期标签
- reactjs - Redux form v8.0.1 main module field could not be resolved 反应原生错误
- python - cx_Freeze 包含依赖的 py 文件