Solrを使用して製品を検索するオンラインストアがあります。基本的なセットアップは問題なく動作しますが、現在、いくつかの機能が不足しています。Amazon などのオンライン ショップを調べたところ、提供されている機能が気に入りました。そこで私は、Solr を構成して一部の機能をエンド ユーザーに提供するにはどうすればよいかを考えました。
私たちの製品データは、次のような製品の標準データで構成されています
- 商品のタイトル
- 説明
- 商品が複数のカテゴリとサブカテゴリに属している
- 製品には、赤、青、緑、S、M、L、XL の T シャツや、16 GB、32 GB の iPad など、複数のバリエーションがあり、オプションがあります。
- 商品にはブランドがある
- 製品には小売業者がいます
今のところ、このスキーマ ファイルを使用して、Solr でインデックスを作成し、クエリを実行しています。
<fieldType name="text" class="solr.TextField" omitNorms="false">
<analyzer type="index">
<tokenizer class="solr.StandardTokenizerFactory"/>
<filter class="solr.StandardFilterFactory"/>
<filter class="solr.WordDelimiterFilterFactory" catenateWords="1" catenateAll="1" preserveOriginal="1"/>
<filter class="solr.LowerCaseFilterFactory"/>
<filter class="solr.EdgeNGramFilterFactory" minGramSize="2" maxGramSize="15"/>
</analyzer>
<analyzer type="query">
<tokenizer class="solr.StandardTokenizerFactory"/>
<filter class="solr.StandardFilterFactory"/>
<filter class="solr.WordDelimiterFilterFactory" catenateWords="1" catenateAll="1" preserveOriginal="1"/>
<filter class="solr.LowerCaseFilterFactory"/>
<filter class="solr.PorterStemFilterFactory"/>
<filter class="solr.PhoneticFilterFactory" encoder="DoubleMetaphone" inject="true"/>
</analyzer>
</fieldType>
EdgeNGramFilterFactoryのような単語shirtをsh,shi,shir,に索引付けしますshirtWordDelimiterFilterFactoryのような単語wi-fiをwi,fi, に分割しますwifiPorterStemFilterFactoryステミングに適していますPhoneticFilterFactoryちょっとあいまい検索を提供します
1 つの問題は、あいまい検索がうまく機能しないことです。その本を検索してInfernoスペルを間違えるとInfenro、検索結果が返されません。SpellCheckComponent( http://wiki.apache.org/solr/SpellCheckComponent )について読んだことがありますが、それがあいまい検索を行う最良の方法なのか、それとも 特徴。
2 番目の問題は、Shirts red赤い T シャツ (赤はオプション タイプの色のオプション値) を検索するか、 または を検索するwoman shoesことが可能であるということadidas shoes womanです。Solrでこれを行うことは可能ですか?
schema.xmlそして 3 つ目の問題は、そのような機能を実現するために、内部のトークナイザーとフィルターのどれが適切な選択なのか、私にはわからないということです。
誰かがsolrでそのような機能を使用したことがあり、この場合に私を助けてくれることを願っています. どうも!
編集
以下は、Solr 内に保存するデータの一部です。
<doc>
<str name="id">572</str>
<arr name="taxons">
<str>cat1</str>
<str>cat1/cat2</str>
<str>cat1/cat2/cat3</str>
<str>cat1/cat4</str>
</arr>
<arr name="options">
<str>color_blue</str>
<str>color_red</str>
<str>size_39</str>
<str>size_40</str>
</arr>
<int name="count_on_hand">321</int>
<arr name="name_text">
<str>Riddle-Shirt Tech</str>
</arr>
<arr name="description_text">
<str>The Riddle Shirt Tech Men's Hoodie features signature details, along with ultra-lightweight fleece for optimum warmth.</str>
</arr>
<arr name="brand_text">
<str>Riddle</str>
</arr>
<arr name="retailer_text">
<str>Supershop</str>
</arr>
</doc>
キーと値のペアが適切な方法で保存されているかどうかはわかりませんoptionsが、それが最初に思いついた方法です。
