我正在研究如何为Sitecore 6.6设置和配置Lucene搜索索引。我将一个基本配置文件拼凑在一起,该文件对所有类型的项目进行索引"文章"模板从我在树中的所需位置开始,并且能够从该索引中提取所有项目并显示结果中的名称。
现在我已准备好自定义该索引。我需要专门索引两个字段,我遇到配置语法的问题。这是两个领域的细分。我希望有人可以帮我调整配置以解决这些问题。
元关键字 - 此字段(单行文本)不是文章模板的一部分,而是从文章继承的另一个名为Meta Base的模板中提取。我不需要存储它,只需将其编入索引进行搜索。恩。价值" ortho,pain,joint"
类别 - 此字段是一个droplink,指向树中可用的类别项列表。我确实需要存储它以及索引它,以便我可以在搜索/显示这些Lucene文档的结果页面上使用它。
我似乎找不到6.6的正确文档。 7岁以上的文档存在,但他们不能在6.6中工作,因为事情似乎发生了重大变化。 Sitecore支持我指向一些旧文档,其中包含已弃用的代码以及无法编译的代码,我读过的其他内容似乎都指向使用Contrib Search(我已经通过NuGet已经)。我想在没有Contrib的情况下让它工作,但如果我需要,我会。
这是我在没有贡献的情况下创建的配置:
<configuration xmlns:patch="http://www.sitecore.net/xmlconfig/">
<sitecore>
<search>
<configuration>
<indexes>
<index id="my-custom-index" type="Sitecore.Search.Index, Sitecore.Kernel">
<!-- name - not sure if necessary but use id and forget about it -->
<param desc="name">$(id)</param>
<!-- folder - name of directory on the hard drive -->
<param desc="folder">__my-custom-index</param>
<!-- analyzer - reference to analyzer defined in Sitecore.config -->
<Analyzer ref="search/analyzer" />
<!-- list of locations to index - each of the with unique xml tag -->
<locations hint="list:AddCrawler">
<!-- first location (and the only one in this case) - specific folder from you question -->
<!-- type attribute is the crawler type - use default one in this scenario -->
<specificfolder type="Sitecore.Search.Crawlers.DatabaseCrawler,Sitecore.Kernel">
<!-- indexing items from web database -->
<Database>web</Database>
<!-- your folder path -->
<Root>/sitecore/content/Northwestern/in-care</Root>
<!-- Article Template -->
<include hint="list:IncludeTemplate">
<ContentHubArticle>{1E79E463-631A-4FBB-BEEA-3304D25F29CD}</ContentHubArticle>
</include>
<indexAllFields>true</indexAllFields>
</specificfolder>
</locations>
</index>
</indexes>
</configuration>
</search>
答案 0 :(得分:4)
Sitecore 6 lucene索引的最基本设置是:
<configuration xmlns:patch="http://www.sitecore.net/xmlconfig/">
<sitecore>
<search>
<configuration>
<indexes>
<index id="custom-index" type="Sitecore.Search.Index, Sitecore.Kernel">
<!-- name of the index displayed in the Sitecore Control Panel -->
<param desc="name">Custom Index</param>
<!-- folder in which index file will be stored -->
<param desc="folder">__$(id)</param>
<!-- reference to the analyzer defined in Sitecore config -->
<Analyzer ref="search/analyzer" />
<!-- list of locations which will be index by our index -->
<locations hint="list:AddCrawler">
<!-- our first and only location crawled by standard Sitecore crawler -->
<custom-loc-1 type="Sitecore.Search.Crawlers.DatabaseCrawler,Sitecore.Kernel">
<!-- location root is Home item in master database -->
<Database>master</Database>
<Root>/sitecore/content/Home</Root>
</custom-loc-1>
</locations>
</index>
</indexes>
</configuration>
</search>
</sitecore>
</configuration>
对于自定义字段,您需要创建自定义搜寻器类,例如:
public class MyCrawler : Sitecore.Search.Crawlers.DatabaseCrawler
{
protected override void
AddAllFields(Document document, Item item, bool versionSpecific)
{
base.AddAllFields(document, item, versionSpecific);
document.Add(CreateField("my_title", item["title"], false, 1));
WorkflowState state = item.State.GetWorkflowState();
document.Add(CreateField("my_final_state",
state != null && state.FinalState ? "1" : "", false, 1));
document.Add(CreateDataField("data_title", item["title"]));
}
}
并注册此抓取工具类:
<locations hint="list:AddCrawler">
<custom-location-1 type="My.Assembly.Namespace.MyCrawler,My.Assembly">
<Database>master</Database>
<Root>/sitecore/content/Home</Root>
</custom-location-1>
</locations>
以下是您可以用来了解有关Sitecore 6搜索的更多信息的博文:
答案 1 :(得分:0)
与Sitecore支持人员交谈时,他们肯定表示这不能通过开箱即用的功能完成。我能够通过使用这一系列博客文章来索引我的字段:
http://sitecoregadgets.blogspot.com/2009/10/working-with-lucene-search-index-part-i.html http://sitecoregadgets.blogspot.com/2009/11/working-with-lucene-search-index-in.html http://sitecoregadgets.blogspot.com/2009/11/working-with-lucene-search-index-in_25.html http://sitecoregadgets.blogspot.com/2010/08/adding-custom-fields-to-index.html http://sitecoregadgets.blogspot.com/2010/07/sitecore-lucene-index-does-not-remove.html
唯一剩下的就是让droplink字段存储一个与指向该项目的guid不同的字段,但我认为这里有足够的内容我可以称之为答案,因为最大的问题是如何索引自定义字段。我完成后可能会回来发布整个代码,所以你不必像我一样把博客文章中的所有内容拼凑起来,但很容易弄清楚它的内容是什么上。
由于他的帮助非常有用,我也赞成马立克的帖子,而且他的评论非常有用。