2012-01-11 311 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」。然後,您可以在舊字段類型中創建一個複製字段。這樣,你將最終得到兩個不同版本的字段,這兩個版本都可以被搜索,只是因爲有時你會希望不使用'@'進行搜索。然後你可以做什麼,如果有人用一些特殊字符搜索,比如'@'讓他們搜索保存的原始字段,否則搜索默認字段像普通。