Sitecore 6.6 - 设置 Lucene 索引
Sitecore 6.6 - Setting up a Lucene index
我正在学习如何为 Sitecore 6.6 设置和配置 Lucene 搜索索引。我拼凑了一个基本配置文件,该文件索引了从树中我想要的位置开始的所有类型为 "Article" 模板的项目,并且能够从该索引中提取所有项目并显示结果中的名称.
现在我已准备好自定义该索引。我需要专门索引两个字段,但我在使用配置语法时遇到了问题。这是这两个领域的细分。我希望有人可以帮助我调整配置以说明这些字段。
Meta Keywords - 此字段(单行文本)不是 Article 模板的一部分,而是从 Article 继承的另一个名为 Meta Base 的模板中提取的。我不需要存储它,只需要为搜索建立索引。前任。值 "ortho, pain, joint"
Category - 此字段是指向树中类别项目的可用列表的下拉链接。我确实需要存储它并为其编制索引,以便我可以在结果页面上使用它 searching/displaying 这些 Lucene 文档。
我似乎找不到 6.6 的正确文档。 7+ 的文档存在,但它们在 6.6 中不起作用,因为情况似乎发生了重大变化。 Sitecore 支持将我引导到一些旧文档,其中包含已弃用的代码以及未编译的代码,而我阅读的所有其他内容似乎都指向使用 Contrib Search(我已经通过 NuGet 引入)。我想让它在没有 Contrib 的情况下工作,但如果我需要,我会的。
这是我在没有 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>
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>
对于自定义字段,您需要创建自定义抓取工具 class,例如:
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"]));
}
}
并像这样注册此爬虫 class:
<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 搜索的更多信息:
在与 Sitecore 支持人员交谈时,他们明确表示这无法通过开箱即用的功能来完成。通过使用这一系列博客 posts:
,我能够让它为我的字段编制索引
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 的字段,但我认为这里有足够的我可以称之为回答,因为最大的问题是如何索引自定义领域。完成后我可能会回来 post 整个代码,这样您就不必像我一样从博客 post 中拼凑所有内容,但很容易弄清楚是什么进行中。
我也支持上面 Marek 的 post,因为他很有帮助并且他的评论非常有用。
我正在学习如何为 Sitecore 6.6 设置和配置 Lucene 搜索索引。我拼凑了一个基本配置文件,该文件索引了从树中我想要的位置开始的所有类型为 "Article" 模板的项目,并且能够从该索引中提取所有项目并显示结果中的名称.
现在我已准备好自定义该索引。我需要专门索引两个字段,但我在使用配置语法时遇到了问题。这是这两个领域的细分。我希望有人可以帮助我调整配置以说明这些字段。
Meta Keywords - 此字段(单行文本)不是 Article 模板的一部分,而是从 Article 继承的另一个名为 Meta Base 的模板中提取的。我不需要存储它,只需要为搜索建立索引。前任。值 "ortho, pain, joint"
Category - 此字段是指向树中类别项目的可用列表的下拉链接。我确实需要存储它并为其编制索引,以便我可以在结果页面上使用它 searching/displaying 这些 Lucene 文档。
我似乎找不到 6.6 的正确文档。 7+ 的文档存在,但它们在 6.6 中不起作用,因为情况似乎发生了重大变化。 Sitecore 支持将我引导到一些旧文档,其中包含已弃用的代码以及未编译的代码,而我阅读的所有其他内容似乎都指向使用 Contrib Search(我已经通过 NuGet 引入)。我想让它在没有 Contrib 的情况下工作,但如果我需要,我会的。
这是我在没有 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>
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>
对于自定义字段,您需要创建自定义抓取工具 class,例如:
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"]));
}
}
并像这样注册此爬虫 class:
<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 搜索的更多信息:
在与 Sitecore 支持人员交谈时,他们明确表示这无法通过开箱即用的功能来完成。通过使用这一系列博客 posts:
,我能够让它为我的字段编制索引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 的字段,但我认为这里有足够的我可以称之为回答,因为最大的问题是如何索引自定义领域。完成后我可能会回来 post 整个代码,这样您就不必像我一样从博客 post 中拼凑所有内容,但很容易弄清楚是什么进行中。
我也支持上面 Marek 的 post,因为他很有帮助并且他的评论非常有用。