PathHierarchyTokenizerFactory トークナイザーのパスを使用してファセットを作成し、ユーザーがアプリケーションで部門をフィルタリングできるようにしようとしています。その理由は、部門が子を持つことができ、これが階層構造を処理する最良の方法のように思われたからです。
現在、次のscheme.xmlを使用しています
<fieldType name="text_path" class="solr.TextField">
<analyzer>
<tokenizer class="solr.PathHierarchyTokenizerFactory" delimiter="|" />
</analyzer>
</fieldType>
<field name="department_path" type="text_path" indexed="true" stored="true" multiValued="true"/>
ただし、これはマッチングに問題を引き起こしています。「department_path:Ovens & Hobs|Gas Hobs」を検索する場合の例をいくつか挙げると、次のように一致するはずです:
- オーブンとホブ|ガスコンロ
- オーブン・コンロ|ガスコンロ|ガスコンロ(60cm)
以下はすべきではありません:
- オーブン&ホブ
- オーブンとホブ|オーブン
- ワークトップ
- ワークトップ|ホブ スプラッシュバック
現在のセットアップでは、次のような同様の名前を含む結果が得られます。
- ワークトップ & スプラッシュバック|キッチン スプラッシュバック|ホブ スプラッシュバック|ホブ スプラッシュバック スチール|ホブ スプラッシュバック
- オーブン、コンロ|電気コンロ|IH コンロ|IH コンロ 60cm
誰かが私がどのようにタイプを変更すべきか考えているなら、それは素晴らしいことです.
ありがとう
編集:
私のschema.xmlをに変更した後
<fieldType name="descendent_path" class="solr.TextField">
<analyzer type="index">
<tokenizer class="solr.PathHierarchyTokenizerFactory" delimiter="\" />
</analyzer>
<analyzer type="query">
<tokenizer class="solr.KeywordTokenizerFactory" />
</analyzer>
</fieldType>
ほとんど機能していますが、「オーブンと調理台|ガス調理台|ガス調理台(60cm)」などのリーフ ノードを検索すると、一致しないはずの結果が得られます。