Azure 搜索:通配符查询不适用于 japanese/chinese 个字符

Azure search: Wild card queries does not work with japanese/chinese characters

我曾 icu_tokenizer 使用自定义分析器为日语单词创建搜索索引。索引创建成功。对于亚洲语言,使用 icu_tokenizer 它比默认的 azure 搜索分词器效果更好。

现在,当我使用查询字符串 Ex:- 赤城时,我从索引中看到了多个搜索结果(总共 131 个)。但是当我使用 same 单词的通配符搜索时,例如:赤城*(在单词末尾添加 *)或 /赤城.*/(使用正则表达式搜索查询)我查看 0 个搜索结果。奇怪的是,* 似乎与单个日文字符赤* 一起工作,给我的搜索结果数量与赤给出的搜索结果数量相同。但是一旦我将日文字符的数量从 1 增加,带有 * 的通配符查询就会停止工作并且 returns 0 搜索结果。我正在使用 querytype=full (lucene syntax query)

在 Azure 门户的搜索浏览器上测试所有这些查询

在我的应用程序中,搜索词通常用作前缀搜索,因此通常我们在搜索字符串的末尾附加 * 以获取搜索结果,但看起来这些带有日文字符的 lucene 通配符查询不起作用。任何想法,当搜索字符串以日文字符给出时,我如何使这些前缀查询(在搜索字符串末尾使用通配符 *)工作?

任何快速帮助将不胜感激!!

抱歉回复晚了。 您是否尝试过使用其中一种日语分析器?例如,ja.microsoft

此外,如果您想使用前缀搜索,您可以尝试使用专为这种情况设计的高效的 suggester feature 进行试验。

我现在对我的安装进行了测试,我可以确认当您使用日语分析器时,通配符仅适用于日语内容。

在我的示例中,我使用未定义特定分析器的 属性 主体设置了一个索引。然后我设置了另一个索引,其中 Body 使用 ja.microsoft 语言分析器。两个索引中的内容是相同的。然后我尝试使用尾随通配符搜索自动车(汽车)。

自动车* returns 使用日语分析器从我的索引中多次点击。如果没有定义特定的分析器,则不会从索引返回任何匹配项。