如何在Solr中搜索特殊字符

时间:2018-03-15 10:25:47

标签: search solr special-characters highlight

我使用的是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”这个词......并且“#”不会搜索和突出显示。

如何进行搜索并突出显示特殊字符的工作?

1 个答案:

答案 0 :(得分:1)

StandardTokenizer在特殊字符上拆分标记,这意味着#会将内容拆分为单独的标记 - 第一个标记将是C - 这就是突出显示的内容。如果您只是搜索C.

,您可能会得到完全相同的结果

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

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