2017-10-27 8 views
0

フィルタリングするために使用する複数の追加フィールドを格納するカスタムインデックスを作成しました。たとえば、カイトカラーを選択するためにいくつかのファセットを保存しています。ある凧は1つの色を有し、他の凧は複数の色を有する。複数のファセットが類似しているKenticoカスタムLuceneインデックス - クエリ方法?

カイト色:濃い青、赤オレンジ

赤深いカイトB色:凧Aの色は濃い青、赤、オレンジ、深い赤、青

このような質問 +色:青 は、カイトAの色が濃い青ですが青色ではありませんが、カイトaとカイトbの両方を返します。カイトBのみが返されます。

私は適切な用語を知らないので、私は見つけたり答えたりするのが難しいかもしれませんが、どのように値を区切って区切ることができるのですか?また、どのように私は の色を検索する場合、クエリをフレーズする:赤色それは値の色を持つ行を返さない: "深紅"?そして、もし私が色を探していたら:(濃い赤)それは "赤い"が "濃い赤"ではない行を返しません。

答えて

0

ここに1つの提案があります。ビジターに色を入力するように頼んでいるか(そうでないと仮定していますか)、フィルタリングするかどうかを確認できるフィルタリストがありますか?

フィルタリストの場合は、値として「dark_blue」、表示として「dark blue」を使用することを検討してください。コンテンツ入力とフィルタの両方そうすれば、フィルタはcolor:dark_blueになります。

このインデックスでは、アナライザータイプとして「開始幅」を使用できます。したがって、「ダークブルー」を検索すると、値として「dark_blue」が検索されます。「blue」は返されません。次に、 "blue"で検索すると、 "blue ..."で始まらないので、 "dark_blue"は表示されません。

+0

ルイに感謝、私はそれを試みるかもしれません。インデックスの値がdark_blue redの場合、フィルタがcolor:redのフィルタである場合は、それでもピックアップされますか?また、luceneは_を無視しない? – user6383418

+0

カラーフィールドがトークン化されている場合、dark_blueとredは2つのトークンとしてインデックスになり、dark_blueは1つの単語として扱われます。 – Rui

1

検索インデックスanalyzer typesを見てください:検索結果は、アナライザータイプ+ search settings of the objectによって異なりますページタイプ、カスタムテーブルなど)。

色のフィールドが検索設定でトークンマークされていると思われるため、フィールドの値の個々のトークン(サブセット)に一致する結果が返されます。トークン化を無効にすると、フィールドの完全な値が検索式と完全に一致する場合にのみ検索が行われます。

+0

フィールドでトークンを無効にした場合、クエリの色:赤、返信 – user6383418

+0

Iveはドキュメントを見て、別のインデックスを試しましたが、データの保存方法やLuceneでクエリを行う方法についてのいくつかの提案が大好きです.Kenticoの質問よりLuceneの質問の方が多いです。 – user6383418

+0

はSearchableとマークされていますか? –

関連する問題