3

約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に変更すると役立つと思います。ところで。これらのファクトリが私のコーパスで生成したトークンを確認する方法はありますか?

最後の質問は、トークナイザーを変更した後、インデックスを再作成する必要がありますか?私の仮定はイエスです。

乾杯トーマス

4

2 に答える 2

0

ハッシュタグ、リツイート、@ nameなどを解析して、これらのツイートにインデックスを付け、solrで個別のフィールドを使用できる場合は、より強力な検索(IMHO)が可能になります。

ご指摘のとおり、空白のトークナイザーに変更すると役立つはずであり、インデックスを再作成する必要があります。検索中も同じトークナイザー、アナライザーを使用する必要があります。

于 2012-06-22T11:33:56.057 に答える
0

StandardTokenizerFactory、空白が続かないピリオドを除いて、句読点を破棄します。特に、「@」を捨てるので、@name 検索は失敗します (完全な電子メール アドレスを検索する場合と同様に)。ClassicTokenizerFactory電子メール アドレスは保持されますが、@name から「@」はまだ捨てられると思います。

WhitespaceTokenizerFactory@name を保持しますが、その後にコンマが続く場合 (@nameは と同じではありません@name,)、扱いが異なるため、適切ではない可能性があります。PatternTokenizerFactory正規表現を使用して解析する方法を正確に指定する場所を使用したくなる場合があります。

于 2014-04-18T16:31:56.743 に答える