我需要允许自由文本搜索包含破折号的值,例如ABCD-12EF
。
我知道standard
分析器不能与-
一起很好地工作,因为它会将内容拆分为多个令牌。我已经创建了一个类似于下面的索引,以尝试使用keyword
和whitespace
分析器,但是*
字符似乎不再起作用。仅当我搜索不带*
的完整值时才得到结果,因此ABCD-12EF
。如果我搜索ABCD-12EF
或ABCD-12*
或ABCD*
,则不会得到任何结果。
知道为什么吗?
public class IndexTryOut
{
[Key, IsFilterable]
public string Id { get; set; }
[IsSearchable, IsFilterable]
[Analyzer("keyword")]
public string Data1 { get; set; }
[IsSearchable, IsFilterable]
[Analyzer("whitespace")]
public string Data2 { get; set; }
}
答案 0 :(得分:1)
您可以定义一个自定义分析器,该分析器使用带有“小写”令牌过滤器的“关键字”令牌生成器-参见我对这个问题的回答:How to index a field with alphanumeric characters AND a dash for wildcard search。