我们正在将大量推文和博客Feed存储到solr中。
现在,如果用户搜索像@rohit这样的Twitter提及,则还会返回仅包含单词rohit的记录。即使我们完全匹配“@rohit”,我也明白这是因为使用了WordDelimiterFilterFactory,它会拆分特殊的字符,
http://wiki.apache.org/solr/AnalyzersTokenizersTokenFilters#solr.WordDelimiterFilterFactory
如果没有“@”,我怎么强迫Solr不回来。我不想删除WordDelimiterFilterFactory,因为splitOnCaseChange和stemEnglishPossessive是有用的吗?希望我很清楚。
此致
罗希特夏尔
答案 0 :(得分:2)
如果设置preserveOriginal =“1”,则应修复此问题。如果不是你的标记化器可能剥离@,那么你必须选择另一个像solr.WhitespaceTokenizerFactory。
答案 1 :(得分:1)
我要做的是创建一个新的fieldType,其中包含preserveOriginal =“1”。然后,您可以在旧的fieldType中创建一个copyfield。这样你最终会得到两个不同版本的字段,可以同时搜索,只是因为有时你会想要搜索没有'@'。你可以做什么,如果有人用一些特殊字符搜索,比如'@'让他们搜索保存的原始字段,否则就像正常一样搜索默认字段。