如何将整个句子视为Azure搜索中的一个标记

时间:2017-11-29 19:27:53

标签: indexing odata analyzer azure-search

我们面临的问题是使用Azure搜索执行完全匹配并忽略区分大小写。

例如,我们有一个名为描述的字段,它可以是一个小句子或长句(例如:欢迎使用Azure搜索)。我们试图将整个句子视为一个标记,以便当用户搜索“欢迎使用”时,它不会返回结果,因为我们必须搜索“欢迎使用Azure搜索”才能完全匹配。另一个要求是我们希望能够搜索不区分大小写的功能,以便搜索“welcome TO Azure SEARCH”将返回结果。

我已使用关键字分析器将整个字段视为单个令牌,但这会阻止搜索不区分大小写。

我还尝试使用 keyword_v2 标记生成器和小写标记过滤器定义自定义分析器。看起来这将解决我的问题,但有300个最大令牌长度限制。在某些情况下,“描述”字段将是一个长度超过300个字符的句子。

我还考虑过将索引字段复制为小写并使用 OData语法$ filter = Description eq'welcome to azure search'。例如,将有两个字段:“描述”“DescriptionLowerCase”,在进行搜索时,搜索“DescriptionLowerCase”以及何时返回结果,返回“描述”。但这会使索引存储的大小翻倍。

有没有更好的方法来解决我的问题?

1 个答案:

答案 0 :(得分:0)

您几乎涵盖了所有可用选项。目前尚无解决方法,因为没有大小限制会导致搜索性能下降。现在正是您为什么需要在整个字符串上精确匹配300个以上字符的原因。您是否尝试过在搜索中使用引号?