カスタムインデックスを使用してSitecoreSearchを使用して、アイテムをフィルタリングおよび検索しようとしています。
アイテムは製品レビューであり、すべてProductReview
テンプレートとともに1つのフォルダーに保存されます。
+ Reviews
- Sample Review 1
- Sample Review 2
- Sample Review 3
ユーザーは、カテゴリ、サブカテゴリでアイテムをフィルタリングし、製品名で検索することができます。したがって、フォームは次のようになります。
Category: [ Drop Down ]
Sub Category: [ Drop Down ]
Product name: [ Single line of Text ]
[ Search Button ]
インデックスを定義するためのドキュメントが非常に薄いことがわかりました。次のプロパティを使用してインデックスを設定しようとしています。
- インデックスWebデータベース
- 必要なのはこれらの3つのフィールドだけなので、これらの3つのフィールドのみを含める必要があります。
- レビューテンプレートに基づくアイテムのみがインデックスに登録されます
- 2つのカテゴリフィールドをトークン化する必要はありません
- カテゴリフィールドでフィルタリングできます
カスタムアナライザーまたはDatabaseCrawlerが必要かどうかはわかりませんが、作成することはまったく検討していません。
これは私がこれまでに持っているものですが、私はまだ実用的なインデックスを作成していません:
<index id="reviews" type="Sitecore.Search.Index, Sitecore.Kernel">
<param desc="name">$(id)</param>
<param desc="folder">reviews</param>
<Analyzer ref="search/analyzer" />
<include hint="list:IncludeField">
<!-- Category -->
<fieldId>Category</fieldId>
<!-- Sub Category -->
<fieldId>Sub Category</fieldId>
<!-- Product Name -->
<fieldId>Product Name</fieldId>
</include>
<locations hint="list:AddCrawler">
<web type="Sitecore.Search.Crawlers.DatabaseCrawler, Sitecore.Kernel">
<Database>web</Database>
<!-- {GUID} -->
<Root>{GUID}</Root>
<Tags>web reviews</Tags>
<IndexAllFields>false</IndexAllFields>
<templates hint="list:AddTemplate">
< !-- Product Review -- >
<reviews>Product Review</reviews>
</templates>
</web>
</locations>
</index>
任意のポインタをいただければ幸いです。
編集
私が探している2つの主なものは次のとおりです。
- トークン化せずにカテゴリフィールドにインデックスを付ける方法。
- Lucine.netAPIでそれを使用してフィルタリングする方法。