Lucene.Net 및 Sitecore.Search.Crawlers.DatabaseCrawler를 사용하고 있습니다. 현재이 검색은 모든 필드에서 가능하며 일부 필드 만 검색하도록 변경하려고합니다.Lucene.Net으로 Sitecore 검색 : 특정 필드에서 검색
public class CustomCrawler : Sitecore.Search.Crawlers.DatabaseCrawler
{
protected override void AddAllFields(Lucene.Net.Documents.Document document, Sitecore.Data.Items.Item item, bool versionSpecific)
{
base.AddAllFields(document, item, versionSpecific);
document.Add(new Field("title", item["TitleField"], Field.Store.YES, Field.Index.TOKENIZED));
document.Add(new Field("image", imageUrl, Field.Store.YES, Field.Index.TOKENIZED));
}
protected override bool IsMatch(Item item)
{
if (!item.TemplateName.Contains("txttmpl")) return false;
return base.IsMatch(item);
}
}
내가 검색 결과로 제목과 이미지 필드를 사용하여 웹 페이지를 표시 해요 : :
var list = new List<SearchResult>();
foreach (var result in results)
{
list.Add(new SearchResult()
{
Title = result.Document.GetField("title").StringValue(),
Image = result.Document.GetField("image").StringValue()
});
}
var jss = new JavaScriptSerializer();
httpContext.Response.ContentType = "application/json";
httpContext.Response.Write(jss.Serialize(list));
httpContext.Response.Flush();
그리고 web.config 파일에서 : 나는 사용자 정의 크롤러가
<index id="myindex" type="Sitecore.Search.Index, Sitecore.Kernel">
<param desc="name">$(id)</param>
<param desc="folder">Myfolder</param>
<Analyzer ref="search/analyzer" />
<locations hint="list:AddCrawler">
<web type="Search.CustomCrawler, Search">
<Database>web</Database>
<Tags>web content</Tags>
<Root>/sitecore/content/Site</Root>
<Boost>2.0</Boost>
</web>
</locations>
</index>
위의 해결 방법은 모든 필드에서 찾아 볼 수 있습니다.
특정 필드 만 검색하려면 어떻게해야하나요? try.example.RemoveField ("SomeFieldName"),하지만 작동하지 않습니다. 일부 필드를 제거하거나 추가하는 방법은 무엇입니까? 미리 감사드립니다.