2011-09-12 6 views
0

私は空白トークナイザイストは一つのフィルタの後に呼び出され、その後他のすべてのフィルタが適用されなければならないスキーマを使用したい:solrのフィルタ間でトークナイザを使用するには?

<filter class="solr.SynonymFilterFactory" tokenizerFactory="solr.KeywordTokenizerFactory" synonyms="german/synonyms.txt" ignoreCase="true" expand="true"/> 
<!-- Case insensitive stop word removal. 
     add enablePositionIncrements=true in both the index and query 
     analyzers to leave a 'gap' for more accurate phrase queries. 
--> 

<tokenizer class="solr.WhitespaceTokenizerFactory"/> 

<filter class="solr.WordDelimiterFilterFactory" 
     generateWordParts="1" 
     generateNumberParts="1" 
     catenateWords="1" 
     catenateNumbers="1" 
     catenateAll="0" 
     splitOnCaseChange="1" 
     preserveOriginal="1" 
/> 

Solrのが唯一のフィルタ間の新しい秩序を適用されますが、トークナイザが前に呼び出されますすべてのフィルタ...

誰か手がかりを持っていますか?

敬具、フィルターがデフォルトになる前にトークナイザをRunnig

答えて

2

をhijolan。これはもっとそういうことです - 方法は、solrが働きます。しかし、特殊な種類のフィルタをトークナイザの前に追加することができます。たとえば、solr.MappingCharFilterFactoryです。

私が言っていること:トークナイザの前で動作するかどうかは、フィルタによって異なります。 CharFilterを見てください:http://wiki.apache.org/solr/AnalyzersTokenizersTokenFilters#CharFilterFactories

あなたは「フィルタ」より複雑な方法で、条件に必要がある場合は、solr.WhitespaceTokenizerFactoryのように、solr.PatternTokenizerFactorysolr.PatternTokenizerFactory

+0

のように私はすでに別のを使用しようとした、さまざまなトークナイザを使用しようとしませんKeywordTokenizerFactoryのようなトークナイザを使用し、その後に同義語リストを適用します。 synonymfilter以外のすべてのフィルタは、割り当てられた空白トークナイザを追加します。それはうまく動作し、私の同義語は正しく動作します。 しかし、私が分析器を見ると、ホワイトスペースで分割された文字列に加えて、テキスト全体が2番目に分割されています。 例:Nullamの結果、sem vitae => Nullamの結果、sem vitae | Nullam |結果|セミ| vitae –

+0

私はあなたのことをよく理解していれば分かりません。「KeywordTokenizerFactory」はあなたの言葉/用語を何も変更することなく処理する必要があります。おそらく 'solr.WordDelimiterFilterFactory'はあなたの単語/単語をwhitspacesに分割します。 'solr.WordDelimiterFilterFactory'マニュアル:'単語区切り文字(すべて非英数字)で区切ってください.' ...スペースは非英数字です –

関連する問題