如何在 Solr 中搜索特殊字符

How can I search the special characters in Solr

我用的是Solr 6.6.2

我需要搜索特殊字符并在 Solr 中突出显示,

但是不行,

我的数据:

[
    {
     "id" : "test1",
     "title" : "test1# title C# ",
     "dynamic_s": 5
    },
    {
     "id" : "test2",
     "title" : "test2 title C#",
     "dynamic_s": 10
    },
    {
     "id" : "test3",
     "title" : "test3 title",
     "dynamic_s": 0
    }
]

当我搜索 "C#",

然后它会像这样响应"test1# title C# ",

只是高亮"C"这个词...而“#”不会搜索和高亮。

如何使特殊字符的搜索和突出显示工作?

StandardTokenizer 根据特殊字符拆分标记,这意味着 # 会将内容拆分为单独的标记 - 第一个标记将是 C - 这就是突出显示的内容。如果您只搜索 C,您可能会得到完全相同的结果。

令牌化过程将使您的令牌最终成为 test2 title C .

使用带有 WhitespaceTokenizer 且仅在空格处拆分的字段类型对于这个确切的用例可能是更好的选择,但不可能说这是否适合您的常规搜索行为(即如果你真的想匹配 'C' 到 `C-99' 等,可能需要按这些字符拆分)。但是 - 您可以使用特定字段进行突出显示,并且该字段分析链将用于确定要突出显示的内容。您可以要求突出显示原始字段和更具体的字段,然后在您的前端应用程序中使用最好的结果。