我有〜50 M推文的存檔。我想看看其他用戶是否互相提及。雖然有問題:有一個名爲Facebook(www.twitter.com/facebook)的帳戶。我想搜索提及此帳戶的那些推文,而不是簡單地說Facebook。solr太陽黑子精確搜索詞
因此,使用太陽黑子我的語法是:
search = FeedEntry.search do
without(:person_id,person.id) # No self referencing
fulltext "@#{person.username}" #Find those Feeds that mention this person
paginate :page => 1, :per_page => 1000000 #Make sure we dont paginate
end
Solr的似乎忽略@符號完全,甚至當搜索把用戶名中的「」或「」這並不重要。
search = FeedEntry.search{fulltext "facebook -RT"}
=> <Sunspot::Search:{:start=>0, :defType=>"dismax", :fq=>["type:FeedEntry"], :rows=>30, :q=>"facebook -RT", :fl=>"* score", :qf=>"retweeters_text text_text"}>
>> search.total
=> 299525
我該怎麼辦?我必須通過這些結果,並使用紅寶石「包括」@facebook「來清理費時的誤報。
我懷疑它與我正在使用的分詞器工廠有關: http://wiki.apache.org/solr/AnalyzersTokenizersTokenFilters#solr.KeywordTokenizerFactory
我在schema.xml中的配置是:
<fieldType name="text" class="solr.TextField" omitNorms="false">
<analyzer>
<tokenizer class="solr.StandardTokenizerFactory"/>
<filter class="solr.StandardFilterFactory"/>
<filter class="solr.LowerCaseFilterFactory"/>
</analyzer>
</fieldType>
我想改變StandardTokenizerFactory到WhitespaceTokenizerFactory在我的情況下,將有助於順便說一句,有沒有辦法,看看哪些令牌這些工廠在我的陰莖產生。 ?
我的最後一個問題是,在更改標記器後是否需要重新編制索引?我的假設是肯定的。
乾杯 托馬斯
你是對的我可能會爲他們創建適當的數據庫字段並將它們存儲爲推文的附加數據看起來Twitter也在做什麼,因爲他們可以報告「實體「也由推文提到。非常感謝! – plotti