2010-12-13 13 views
2

商品コード(FI302010、RR220011など)を含む通常のテキストを入力するテキストフィールドがあります。 これらの製品番号を検索したいと考えています。 私はANALYSISツールでそれを試しました - そして、それは可能であるように見えます。標準のテキストフィールドは、製品コードを「FI」と「302010」に分割する単語区切りを行いますが、問合せと索引の両方で同じことが起こる限り、問題はありません。 私はスキーマブラウザを見ると製品コードを見つけることができませんが、コードの茎のようなもの(30201 - 最後の0はありません)を見つけることができます。Solrの番号/製品コードの検索

私はさまざまなテキストタイプ(text_ws、textTight、およびtext)を使用しようとしましたが、検索することはできません。

テキストでテキスト検索を有効にするにはどうすればよいですか?

おかげ

答えて

4

あなたはそのトークナイザとしてsolr.KeywordTokenizerFactoryを使用するには、このフィールドを設定する必要がありますように思えます。
名前が実際には伝わらないので、このトークナイザは、基礎となるフィールドを1つのトークンとして扱い、空白、文字から数字、数字から文字へのトランジション、句読点、これらのためのcharフィルタを持っている)。

私はSolrの設定のための最新の仕様に関する最新ではありませんが、私はそのような何かに見える可能性があるというフィールドのスキーマ内のエントリを推測している:

<fieldtype name="myProductNumberFIeld" class="solr.TextField"> 
    <analyzer> 
    <!-- can have a few filters of course --> 
    <charFilter class="solr.MappingCharFilterFactory" 
     mapping="mapping-ISOLatin1Accent.txt"/> 
    <filter class="solr.LowerCaseFilterFactory"/> 
    <!-- etc. --> 

    <!-- That's the main thing you need --> 
    <tokenizer class="solr.KeywordTokenizerFactory"/> 

    </analyzer> 
</fieldtype> 

をより一般的にしたいだろうしユーザーがこれらの識別子の特定の形式(句読点やその他の区切り記号がある場合はその区切り記号など)を常に認識しているわけではないため、これらのフィールドのリコールを改善する方法として、製品番号、部品番号、UPCなどの、等でなければならない)。

しかし、別のアナライザを使用すると、一般的なテキスト検索との関連付けができなくなるという問題があります。これは、些細なことでユーザーのクエリを処理する方法が1つしかないからです。

0

これは実際の設定例でのみ機能します。

例Solver 1.4.1を実行し、設定例を実行すると、あなたが言ったように、分析ツールはストックテキストフィールドでこれが機能することを示していることがわかります。

次に、例のスキーマの「フィーチャー」フィールドがテキストタイプであることを確認します。 apache-solr-1.4.1/example/examplocsのサンプルファイルの1つを編集します。 「monitor.xml」と言ってください。 1つの文書のフィーチャーフィールドに製品コードを追加します。 (両側のスペース)

(java -jar post.jar monitor.xmlを使用して)ファイルをSolrにポストします。今度はそれを探してください。できます。スキーマブラウザを確認します。 featuresフィールドにすべての用語を表示します。ある数字の中にその数字だけが存在することに注意してください。

それはすべて私の作品です。

あなたのスキーマのブラウズに何が起こったのか、おそらく入力ミスでしょうか?番号は茎ではない。末尾の文字は0ではないo(文字)です。それはあなたの問題かもしれません。

keywordtokenizerを使用すると、元の質問であった製品コードの数値部分を見つけることができなくなります。