約5,000万件のツイートのアーカイブがあります。他のユーザーがお互いに言及しているかどうかを確認したいと思います。ただし、問題があります。facebook(www.twitter.com/facebook)というアカウントがあります。単にフェイスブックと言うのではなく、このアカウントに言及しているツイートを検索したいと思います。
したがって、黒点を使用した私の構文は次のとおりです。
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
私に何ができる?これらの結果を確認し、ruby "include?" @ 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に変更すると役立つと思います。ところで。これらのファクトリが私のコーパスで生成したトークンを確認する方法はありますか?
最後の質問は、トークナイザーを変更した後、インデックスを再作成する必要がありますか?私の仮定はイエスです。
乾杯トーマス