我正在试验Azure搜索。在我的搜索索引中,我有一个名为" description"的字段。此字段中的条目的一些示例包括:
"The trusted leader"
我正在尝试创建一个正则表达式,该表达式返回以" ted"结尾的结果。例如,我喜欢
{{1}}
要退回,但不是:
{{1}}
我尝试了以下正则表达式。但是,它不起作用:
"搜索":"名称:/.*(TED)$ /"
我不知道为什么。我以为美元符号用于表示正则表达式中字符串的结尾。它似乎应该工作。它是Azure搜索中的错误吗?
答案 0 :(得分:1)
感谢您伸出援手。
在Azure搜索中,文档内容被细分为随后编入索引的术语。当您发出搜索查询时,搜索引擎会尝试将查询字词与索引中的字词进行匹配。
例如,您提供的句子将分成单个单词。这个过程称为词法分析,我将其描述为here和here。默认情况下,搜索引擎会假定您的内容采用自然语言。标准词法分析器删除标点符号并在空格上拆分。因此,你构建的正则表达式是独立匹配每个单词,而不是整个句子。
您可以使用custom analyzers自定义词法分析过程。例如,您可以使用KeywordAnalyzer告诉搜索引擎将整个文档视为一个术语。
如果有帮助,请告诉我
答案 1 :(得分:0)
正如@Yahnoosh所提到的,你必须使用自定义分析器。对于仅匹配以某些字符结尾的字词,我认为您不需要$timeout(function() {
$scope.verificar_sesion();
}, 500);
。事实上,我相信你可以这样做:$
。
我实际上写过这个主题的博客文章。它显示了如何Azure Search queries with StartsWith, EndsWith, and Contains。
我希望这会有所帮助。