2017-05-09 1 views
1

私はSolRクラウド6.5.0のインストール作業中です。 私の目標は、検索用語と一緒に出現するすべての用語を検索し、それらの順位を数え、トップNを取ることです。 これを行うにはPatternTokenizerというTextFieldを定義するタイプtext_en_facetsのフィールドを定義しました。それ以外はほとんどありません(投稿の最後に完全な定義があります)。SolR:TextFieldのファセット化

今私のインスタンスはかなりいくつかのデータが含まれていますフィールドは、結果として、私は次のエラーを取得する、1.3M独特の用語が含まれており:

o.a.s.s.FastLRUCache Error during auto-warming of key:payload_en_facets:org.apache.solr.common.SolrException: java.lang.IllegalStateException: Too many values for UnInvertedField faceting on field… 

私はいずれかが存在する場合other people had the same issueと私は思っていたことに気づきましたベストプラクティスに関するニュース、および/またはこの制限を回避する方法 StrFieldを使用するためにデータのインデックスを再作成する必要がなく、ドキュメントを手動で分析する必要がない場合は素晴らしいと思います。

私は既にfacet.method,facet.limitfacet.mincountの異なる設定を試しましたが、これで問題は解決されませんでした。 他のアイデアはありますか?

<fieldType name="text_en_facets" class="solr.TextField" positionIncrementGap="100"> 
    <analyzer> 
     <!-- recognises e-mail addresses, urls, #-tags and @-mentions, alphanumeric words (possibly containing inner periods) --> 
     <tokenizer class="solr.PatternTokenizerFactory" 
        pattern="(?U)([\w-\.][email protected][\w-\.]+)|(https?:\S+)|((\s|^)[@#]\w+)|(\w+(\.\w+)?)" group="0"/> 
     <!-- there might be tokens containing trailing/leading white spaces --> 
     <filter class="solr.TrimFilterFactory"/> 
     <filter class="solr.LowerCaseFilterFactory"/> 
     <filter class="solr.StopFilterFactory" format="snowball" 
       words="stopwords/stopwords_en.txt,stopwords/stopwords_en_nltk.txt,stopwords/stopwords_en_twitter.txt" 
       ignoreCase="true"/> 
     <!-- kills urls --> 
     <filter class="solr.PatternReplaceFilterFactory" pattern="(?U)https?:\S+" replacement=""/> 
     <!-- kills numbers --> 
     <filter class="solr.PatternReplaceFilterFactory" pattern="(?U)^[0-9.,']+$" replacement=""/> 
     <!-- kills meaningless tokens --> 
     <filter class="solr.LengthFilterFactory" min="2" max="1024"/> 
    </analyzer> 
</fieldType> 
+0

回答からパッチを試しましたか? – MatsLindh

+0

こんにちは@MatsLindh、まだ – Alberto

答えて

1

これは、テキストフィールドでのファセット処理に使用される内部構造の制限です。

  • このシナリオでは非常に遅くなりますfacet.method=enum、とそれを回避することが可能なはずである
  • あなたは破片の多くに、インデックスを分割しようとするかもしれませんが、その作業のチャンスは、あなたの率に依存しますその用語の分布。また、パフォーマンスが低下する可能性があります。

私は問題を見つけて修正コード(https://github.com/tokee/lucene-solr/tree/uninvert-optimize)を書いていますが、それは現時点では役に立ちません。私はSolrに取得中ですので、更新のためにhttps://issues.apache.org/jira/browse/SOLR-11240を見てください。

Updated 20170824:@Alberto Solrにパッチを追加しましたが、タイミングの問題により、今後リリースされる6.6.1および7.0リリースには含まれません。今必要な場合は、問題のSOLR-11240のパッチがSolr 6.5+のソースコードにきれいに適用されていることを確信しています。

Updated 20171017:@Albertoこの修正は、本日発表されたSolr 7.1の一部です。あなたがアップグレードしたい場合、これはあなたの問題を解決するはずです。

+0

申し訳ありません、@トックEskildsen、ちょうどあなたの更新を読んだ。当時私のチームは月ごとに新しいコレクションを作成することに決めました。私はパッチを見ます;) – Alberto

関連する問題