Solr搜索问题

Solr搜索问题,solr,Solr,我们在solr中存储了大量推文和博客提要 现在,如果用户搜索twitter上提到的@rohit,只包含rohit一词的记录也会被返回。即使我们精确匹配了“@rohit”,我知道这是因为使用了WordDelimiterFilterFactory,它会根据特殊字符进行拆分 http://wiki.apache.org/solr/AnalyzersTokenizersTokenFilters#solr.WordDelimiterFilterFactory 如何强制Solr在没有“@”的情况下不返回

我们在solr中存储了大量推文和博客提要

现在,如果用户搜索twitter上提到的@rohit,只包含rohit一词的记录也会被返回。即使我们精确匹配了“@rohit”,我知道这是因为使用了WordDelimiterFilterFactory,它会根据特殊字符进行拆分

 http://wiki.apache.org/solr/AnalyzersTokenizersTokenFilters#solr.WordDelimiterFilterFactory
如何强制Solr在没有“@”的情况下不返回。我不想删除WordDelimiterFilterFactory,因为splitOnCaseChange和stemEnglishPossessive很有用?希望我说的很清楚

问候,


Rohit

如果设置preserveOriginal=“1”,则应修复此问题。如果没有,您的标记器可能会删除@,因此您必须选择另一个,如solr.WhitespaceTokenizerFactory。

如果设置preserveOriginal=“1”,则此问题应该得到解决。如果没有,您的标记器可能会删除@,因此您必须选择另一个,如solr.WhitespaceTokenizerFactory。

我要做的是创建一个新的字段类型,其中包含preserveOriginal=“1”。然后可以在旧的字段类型中创建一个copyfield。这样,您将得到两个不同版本的字段,这两个字段都可以搜索,只是因为有时您希望搜索时也不使用“@”。然后,如果有人使用某些特殊字符(如“@”)进行搜索,您可以让他们搜索保留的原始字段,否则,您可以像普通字段一样搜索默认字段。

我要做的是创建一个新的字段类型,其中包含preserveOriginal=“1”。然后可以在旧的字段类型中创建一个copyfield。这样,您将得到两个不同版本的字段,这两个字段都可以搜索,只是因为有时您希望搜索时也不使用“@”。然后,如果有人使用一些特殊字符(如“@”)进行搜索,请让他们搜索保留的原始字段,否则,请像正常搜索一样搜索默认字段。

出于好奇,使用WordDelimiterFilterFactory比使用whitespacetokenizerfactory有什么好处?您不会使用其中一个。当使用WhitespaceTokenizerFactory时,您实际上需要使用WordDelimiterFilterFactory使术语可用于搜索。只是出于好奇,使用WordDelimiterFilterFactory比使用WhitespaceTokenizerFactory有哪些优点?您不使用其中一个。当使用WhitespaceTokenizerFactory时,实际上需要使用WordDelimiterFilterFactory使术语可用于搜索。