2011-09-12 85 views
0

我想用一個模式,其中一個過濾器後,被稱爲空格標記生成器IST之後,所有其他過濾器應適用:如何在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的只適用於過濾器之間的新秩序,但標記生成器被調用之前每個過濾器...

有沒有人有線索?

最好的問候,hijolan

回答

2

運行過程中出現的標記生成器之前的過濾器是默認的。更像這樣的 - 就是這樣,solr的作品。但是您可以在標記器之前添加特殊類型的篩選器,例如solr.MappingCharFilterFactory

我想說的是:它取決於過濾器,如果它在分詞器之前工作。看看CharFilter:http://wiki.apache.org/solr/AnalyzersTokenizersTokenFilters#CharFilterFactories

如果您需要在「過濾器」的條款在更復雜的方式,像solr.WhitespaceTokenizerFactory呢,嘗試使用不同的標記生成器,像solr.PatternTokenizerFactorysolr.PatternTokenizerFactory

+0

我已經嘗試過使用其他tokenizer類似KeywordTokenizerFactory,並在此之後應用同義詞列表。除同義詞過濾器之外的所有其他過濾器都會分配額外的Whitespace-Tokenizer。這有效,我的同義詞是正確的。 但是,如果我在分析器中查看,我還會使用空格將分割的字符串再次分割出來。 例如:Nullam consequat,sem vitae => Nullam consequat,sem vitae | Nullam | consequat | sem |簡歷 –

+0

不確定,如果我理解你的話:'KeywordTokenizerFactory'應該處理你的單詞/術語而不做任何改變。 「solr.WordDelimiterFilterFactory」可能會將您的單詞/術語分割爲更多的空白處。看看'solr.WordDelimiterFilterFactory'手動:'在字內分隔符(所有非字母數字字符)上進行拆分.' ...其中空格不是字母數字 –