2012-01-11 181 views
0

我们正在将大量推文和博客订阅源存储到solr中。Solr搜索问题

现在,如果用户搜索Twitter提到的类似@rohit,那么只包含单词rohit的记录也将被返回。即使我们做一个精确匹配“@rohit”,我理解这是因为使用WordDelimiterFilterFactory的其将在特殊的字符的,

http://wiki.apache.org/solr/AnalyzersTokenizersTokenFilters#solr.WordDelimiterFilterFactory 

我怎么能强迫Solr的到没有“@”返回。我不想删除WordDelimiterFilterFactory,因为splitOnCaseChange和stemEnglishPossessive有帮助吗?希望我清楚。

问候,

罗希特

回答

2

如果设置preserveOriginal = “1” 这个问题应该是固定的。如果不是你的tokenizer可能会去掉@,所以你必须选择另一个像solr.WhitespaceTokenizerFactory。

+0

出于好奇,使用WordDelimiterFilterFactory比whitespacetokenizerfactory有什么优势? – sesmic 2012-01-11 15:12:19

+0

你不使用一个。使用WhitespaceTokenizerFactory时,实际上需要WordDelimiterFilterFactory来使术语可用于搜索。 – 2012-01-11 15:27:40

1

我会做的是创建一个新的fieldType其中preserveOriginal =“1”。然后,您可以在旧字段类型中创建一个复制字段。这样,你将最终得到两个不同版本的字段,这两个版本都可以被搜索,只是因为有时你会希望不使用'@'进行搜索。然后你可以做什么,如果有人用一些特殊字符搜索,比如'@'让他们搜索保存的原始字段,否则搜索默认字段像普通。