我使用的是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”这个词......并且“#”不会搜索和突出显示。
如何进行搜索并突出显示特殊字符的工作?
答案 0 :(得分:1)
StandardTokenizer在特殊字符上拆分标记,这意味着#
会将内容拆分为单独的标记 - 第一个标记将是C
- 这就是突出显示的内容。如果您只是搜索C.
令牌化过程会使您的令牌最终成为test2
title
C
。
使用只有WhitespaceTokenizer的字段类型只能在空格上拆分可能是这个确切用例的更好选择,但是不可能说这是否适合您的常规搜索行为(即如果你真的想要将'C'与'C-99'等匹配,可能需要按这些字符进行分割)。但是 - 您可以使用特定字段进行突出显示,并且将使用字段分析链来确定要突出显示的内容。您可以要求突出显示原始字段和更具体的字段,然后在前端应用程序中使用最佳结果。