2016-08-17 11 views
0

私はsitecore 8を使用しています。すべての私のsitecoreコンテンツの全文検索を実行する方法を探しています。私には解決策がありますが、これを行うにはよりよい方法が必要だと感じています。Sitecore:luceneを使用した全文検索

私のアプローチ: 私はすべてのテキストフィールドを1つの計算フィールドにマージする計算フィールドを持っています。検索を実行する前に、検索テキストをトークン化し、フィールドに一致するORed述語を作成します。

私はタイトルとマッチするアイテム、つまりフィールドレベルのブースティングが緩んでいるアイテムをブーストする必要があると、実際には複雑になるため、この方法が嫌いです。

FYI:私のコードはso postと非常によく似ています。

答えて

1

サイトコアは、すでにすべてのテキストフィールドが含まれているフルテキストフィールド、_contentを維持

感謝。あなたはそれに対して検索を実行することができます。 _contentに追加される計算フィールドを作成することもできます(データソースコンテンツの例hereなど)。

ので、最新バージョンでは、クエリに検索用語を追加すると、次のようになり、など、場所、あなたがフルテキスト検索のためのLINQクエリを構築している、とすでにテンプレート上で濾過していると仮定すると:

var terms = SearchTerm.Split(); 
var currentExpression = PredicateBuilder.True<SiteSearchResultItem>(); 
foreach (var term in terms) 
{ 
    //Content is mapped to _content 
    currentExpression = PredicateBuilder.And(currentExpression, x => x.Content.Contains(term)); 
} 
query = query.Where(currentExpression); 

通常、ORではなくANDで検索したいと思うでしょう。

これでフィールドレベルのブースティングが失われることは間違いありません。結局のところ、Luceneは質の高いフルテキストサイト検索を作成するための素晴らしいソリューションではありません。これが重要な要件であれば、CoveoやGoogle Site Searchのようなものを見ることもできます。

関連する問題