2011-09-09 5 views
2

私はsolanでluceneを使っていくつかの文書(ニュース)を索引付けしています。これらの文書には、ヘッダーラインもあります。 ここでは、HEADLINEフィールド上でファセット検索を行い、最高の数を持つ用語を見つけようとしています。 これはstopword-listを含めて問題なく動作します。 HEADLINEフィールドは、複数の値を持つフィールドです。私はsolr.StandardTokenizerFactoryを使用して、これらのフィールドを単一の用語に分割します(これはベストプラクティスではありませんが、唯一の方法であり、動作します)。facet-resultの保護された単語?

場合によっては、トークン化ツールは、9/11(9と11に分割されている)のように分割しない用語を分割します。だから私は "protword"リストを使うことに決めました。 "9/11"はこの原型リストの一部です。しかし、変化はありません。ここで

が私のschema.xmlファセット結果を見て

<fieldType name="facet_headline" class="solr.TextField" omitNorms="true"> 
     <analyzer> 
      <tokenizer class="solr.StandardTokenizerFactory" protected="protwords.txt"/> 
      <filter class="solr.LowerCaseFilterFactory"/> 
      <filter class="solr.TrimFilterFactory" /> 
      <filter class="solr.StopFilterFactory" 
        ignoreCase="true" 
        words="stopwords.txt" 
        enablePositionIncrements="true" 
       protected="protwords.txt" 
       /> 
     </analyzer> 
    </fieldType> 

から一部ですが、私は「9/11」は「9」または「11時(ファセット)グループ化を扱った文書の多くを見ます"しかし、決して" 9/11 "。

なぜこれが機能しないのですか?

ありがとうございます。

答えて

0

そのための最終的な解決策を問題は選択することでしたsolr.PatternTokenizerFactory

1

問題は、好きなフィルタ/トークナイザに対して保護された単語を設定できないことです。特定のフィルタのみがその機能をサポートしています。したがって、StandardTokenizerは保護された単語を無視し、9/11を '9' '11'に分割しています。 WhitespaceTokenizerを使用すると、9/11が分割されないことが保証されます。

さらに、StopFilterFactoryが保護された単語を認識するようには見えません( 'to'や 'and'のようなストップワードを除外するだけです)。WordDelimiterFilterFactoryは保護された単語を使用しています。それはあなたを助けることができる。

ドキュメントを分析する方法を確認する最良の方法は、それがインデックスまたは照会されたときに、フィールドが故障したかを確認するためにSolr administration utilityに建設を使用することです。

+0

'WhitespaceTokenizer'を使用すると良い考え。私は 'splitOnNumerics =" 0 "'とWhitespaceTokenizerFactory'を組み合わせて使用​​しています。効果は、 "9/11"が今や1つのトークンであるが、 ":"を "9/11:"(例えば)から分離しないことである。だから 'solr.PatternTokenizerFactory'は' WhitespaceTokenizer'の代わりに使うことができます。句読点を削除する唯一の方法ですか? –

関連する問題