2012-01-17 9 views
3

これは私(かなり標準)nグラムスキーマです - 今laptop_ngramSolrのNGRAMマッチ災い

<fieldType name="ngram" class="solr.TextField" positionIncrementGap="100" stored="false" multiValued="true"> 
    <analyzer type="index"> 
    <tokenizer class="solr.StandardTokenizerFactory"/> 
    <filter class="solr.LowerCaseFilterFactory"/> 
    <filter class="solr.NGramFilterFactory" minGramSize="1" maxGramSize="15"/> 
    </analyzer> 
    <analyzer type="query"> 
    <tokenizer class="solr.StandardTokenizerFactory"/> 
    <filter class="solr.LowerCaseFilterFactory"/> 
    </analyzer> 
</fieldType> 

: "g74sx-" リターン -

<arr name="laptop_ngram"> 
    <str>ASUS G74SX-A1 17.3-Inch Gaming Laptop</str> 
</arr> 

しかしlaptop_ngram:「g74sx-A1を"何も見つかりません。

ところで、 " - "をエスケープしても違いはありません。

+0

同じ分析を使用しない理由クエリの設定も変わりませんか? –

+0

solr.NGramFilterFactoryをクエリアナライザに追加することを意味しますか? – Jerry

+0

はい(私は12文字を入れる必要があります...) –

答えて

1

StandardTokenizerFactoryは、この言葉を何かする可能性があります。これは解析ページで確認できます。

したがって、WhitespaceTokenizerFactoryに変更すると問題が解決する可能性があります。

+0

WhitespaceTokenizerFactoryを試しましたが、残念ながら "g74sx a1"が見つかるという意味で素晴らしい結果にはなりませんでしたが、正式な生産モデル "g74sx-a1"あなたの指針のおかげで、私は新しい方向を示して、私は検索に戻った。 WordDelimiterFilterFactoryが役に立ったようですが、30分後にSolr 3.4のダウンロード/コンパイル/追加方法を見つけられませんでした。( – Jerry

+0

あなたはそれをダウンロードする必要はありません。詳細は、http://wiki.apache.org/solr/AnalyzersTokenizersTokenFilters#solr.WordDelimiterFilterFactoryを参照してください。 –

1

O.クラインのおかげで、私は新しい方向性を示しました。

私は最終的にWhitespaceTokenizerFactoryプラスWordDelimiterFilterFactoryで和解 - しかし "g74sx"、 "g74sx-"、 "g74sx-A"、および "g74sx-A1"

のために働く

<fieldType name="ngram" class="solr.TextField" positionIncrementGap="100" stored="false" multiValued="true"> 
    <analyzer type="index"> 
    <tokenizer class="solr.WhitespaceTokenizerFactory"/> 
    <filter class="solr.WordDelimiterFilterFactory" generateWordParts="1" generateNumberParts="1" catenateWords="1" catenateNumbers="1" catenateAll="1" preserveOriginal="1"/> 
    <filter class="solr.LowerCaseFilterFactory"/> 
    <filter class="solr.NGramFilterFactory" minGramSize="1" maxGramSize="15"/> 
    </analyzer> 
    <analyzer type="query"> 
    <tokenizer class="solr.WhitespaceTokenizerFactory"/> 
    <filter class="solr.LowerCaseFilterFactory"/> 
    </analyzer> 
</fieldType> 

"g74sx-x"と "g74sx-xa1"では "g74sx-xa1"が見つかりましたが、 "g74sx-xa"では見つかりませんでした.. 。

関連する問題