製品 SKU のカスタム テキスト フィールド タイプを作成しています。
(ほんの一例) のような SKU がある場合ABC-DEF123G/5
、ユーザーが句読点の有無にかかわらず検索できるようにしたいと考えています。多くの場合、関連するのは SKU の一部のみです (例:ABC-DEF123
私の例)。
これまでのところ、私は次のようにschema.xml
見えます:
<fieldType name="sku" class="solr.TextField" omitNorms="false">
<analyzer>
<tokenizer class="solr.KeywordTokenizerFactory"/>
<filter class="solr.LowerCaseFilterFactory"/>
<filter class="solr.WordDelimiterFilterFactory"
splitOnCaseChange="0"
splitOnNumerics="0"
stemEnglishPossessive="0"
catenateAll="1"
/>
<filter class="solr.EdgeNGramFilterFactory" minGramSize="3" maxGramSize="15"/>
</analyzer>
</fieldType>
<!-- For use in Sunspot: -->
<dynamicField name="*_sku" stored="false" type="sku" multiValued="true" indexed="true"/>
これは、SKU の一部を検索して適切な結果を取得できるという点でうまく機能しますDEF123
(ngram フィルターのおかげです)。ただし、句読点区切り記号なしで検索すると、一致するものが返されません。これはABC-DEF123G/5
問題ありませんが、ABCDEF123G5
そうではありません。
スキーマを分析すると、検索でABCDEF123G5
一致が強調表示されていることがわかりますが、実際のクエリを実行すると結果が返されません。
Solr を再起動し、ドキュメントのインデックスを再作成しました。何度も。
SKU などのインデックス作成に関する知恵の真珠はありますか?
この編集者 ( aitchnyu ) は、ウィキペディアからこれを追加しました。
Stock-Keeping Unit (SKU) は、店舗やその他のビジネスで販売される商品やアイテムを一意に識別するために使用される番号またはコードです。
これは、購入できる個別の製品およびサービスごとに固有の識別子です。SKU の使用はデータ管理に根ざしており、会社は倉庫や小売店などで在庫や製品の入手可能性を体系的に追跡できます。多くの場合、マーチャント レベルで割り当てられ、シリアル化されます。各 SKU は、アイテム、バリアント、製品ライン、バンドル、サービス、料金、または添付ファイルに関連付けられています。SKU は、多くの場合、同じ製品の異なるバージョンを指すために使用されます。たとえば、Guitar Hero 3 というゲームを扱っている小売店には、3 つのプラットフォームごとに 2 つずつ、合計 6 つの SKU があり、1 つはギター コントローラー付きで、もう 1 つはギター コントローラーなしです。