Azure 认知搜索 - 如何使用保留字符进行搜索 &



我在搜索带有保留字符的文档时遇到问题。更具体地说,我有一个包含特殊字符&的搜索字符串;。但我无法从azure搜索文档中读取数据。下面是我用来从搜索索引中读取文档的C#代码。

public async Task AzureSearch()
{
string searchKey="Rohan_A&F"; 
SearchOptions options = new SearchOptions();            
options.SearchFields.Add("CustomerNm");
options.Select.Add("Id");
options.Select.Add("CustomerName");       
options.QueryType = SearchQueryType.Full;
options.SearchMode = SearchMode.All;   

var client = CreateSearchClient();
var response = await client.SearchAsync<Object>(String.Format("{0}*",searchKey), options);
}

所以不确定我是否遗漏了什么或不理解正确的文档。但我没能得到结果。

搜索特殊字符取决于您使用的分析器。如果您只使用标准分析器,则在索引过程中会删除特殊字符。您可以使用REST API来测试标准分析器对Rohan_a&F:

"tokens": [
{
"token": "**rohan_a**",
"startOffset": 0,
"endOffset": 7,
"position": 0
},
{
"token": "**f**",
"startOffset": 8,
"endOffset": 9,
"position": 1
}
]

如您所见,索引器保留的唯一令牌是rohan_af。你的问题和用例与我最近回应的一个问题重复:Azure搜索不使用特殊字符

看看重复的问题,详细了解如何使用不同的分析器来搜索特殊字符。

最新更新