Config/ExamineIndex.configでは、ユーザーが検索できるようにするすべてのプロパティを持つ新しいインデックスセットを作成します。
Umbraco.TypedSearch(Request.QueryString ["query"]);ページ全体で何かを検索しますが、UmbracoExamineを正しく設定した場合、人々が検索できるようにするドキュメントタイプを選択することができます。また、人々がどのような種類のプロパティをインデックス化できるようにするかを選択できますコンテンツはに基づいています。
<IndexSet SetName="ExternalTopLevelSearchSet" IndexPath="~/App_Data/TEMP/ExamineIndexes/{machinename}/TopLevelSearch/">
<IndexAttributeFields>
<add Name="Name"/>
<add Name="bodyText"/>
<add Name="tags"/>
<add Name="themes"/>
<add Name="parentID"/>
</IndexAttributeFields>
<IncludeNodeTypes>
<add Name="ArticlePage" />
</IncludeNodeTypes>
</IndexSet>
が次にあなたが
<add name="ExternalTopLevelIndexer" type="UmbracoExamine.UmbracoContentIndexer, UmbracoExamine"
supportUnpublished="false"
supportProtected="false"
interval="10"
analyzer="Lucene.Net.Analysis.Standard.StandardAnalyzer, Lucene.Net"
indexSet="ExternalTopLevelSearchSet"/>
今コンフィグ/ ExamineSettings.configでインデクサーを作成する必要があり、あなたがConfigでも、検索プロバイダを作成/ ExamineSettings.config
:たとえば
<add name="ExternalTopLevelSearcher" type="UmbracoExamine.UmbracoExamineSearcher, UmbracoExamine"
analyzer="Lucene.Net.Analysis.Standard.StandardAnalyzer, Lucene.Net" indexSet="ExternalTopLevelSearchSet" enableLeadingWildcards="true"/>
私のC#コードは上記の「ExternalTopLevel」-searcherを使用しています。
public List<SearchResult> SearchResults
{
get
{
if (!string.IsNullOrEmpty(HttpContext.Current.Request.QueryString["q"])) {
var searcher = ExamineManager.Instance.SearchProviderCollection["ExternalTopLevelSearcher"];
// Search criteria.
var searchCriteria = searcher.CreateSearchCriteria(BooleanOperation.Or);
var q = HttpContext.Current.Request.QueryString["q"].ToLower().Trim().Split(' ');
var contentType = HelperClass.GetContentTypeNodes().FirstOrDefault(item => q.Contains(item.Name.ToLower()));
q = q.Where(i => i.Length > 3).ToArray();
var query = searchCriteria
.GroupedOr(new[] { "nodeName" }, q.Select(x => x.Boost(150)).ToArray())
.Or()
.GroupedOr(new[] { "grid" }, q.Select(x => x.Boost(80)).ToArray())
.Or()
.GroupedOr(new[] { "tags", "themes", "institutions" }, q.Select(x => x.Boost(110)).ToArray());
// Search results
var searchResults = searcher.Search(query.Compile()).OrderByDescending(x => x.Score);
return searchResults.ToList();
}
return new List<SearchResult>();
}
}
これがあなたを助けてくれることを願っています!
万が一、 – KlydeMonroe
私は恐れていませんが、コードは似ています。私はRazorでそれを持っていて、私が使っているアーキテクチャに合うように書き直しました。 – Mikkel
@Mikkel、私はこのアプローチを学ぶのも初めてです。この例ではカミソリを使用していない場合は、単純にクラスファイルとして保存して、ページにコンパイルするだけですか?ありがとう – blackhawk