Sitecore:Lucene索引项目ID存储时没​​有花括号

时间:2016-06-21 10:54:55

标签: lucene sitecore

我有以下配置来存储字段。

<fieldType fieldName="Profile Id" storageType="YES" indexType="TOKENIZED" vectorType="NO" boost="1f" type="System.Guid" nullValue="NULL" emptyString="EMPTY" settingType="Sitecore.ContentSearch.LuceneProvider.LuceneSearchFieldConfiguration, Sitecore.ContentSearch.LuceneProvider" />

当我用LukeAll检查索引时,我看到id为:

enter image description here

我不知道为什么花括号消失了,为什么所有的字符都是小写的。我希望将它存储为普通的guid,就像在sitecore中用花括号和所有字符大写一样。

我也试过type="System.string",但它仍然是一样的。

2 个答案:

答案 0 :(得分:6)

实际上,由于您的字段已取消,因此Sitecore会以其避免出现其他情况的方式存储您的ID。 TOKENIZED意味着,您的ID将在Lucene内部分解如下:

c50e5028 8eba 4ba9 854cf (你得到的照片)

因此,如果您在Lucene中搜索8eba,它将与您现在看到的profile_id字段相匹配。这很少是人们所期望的。

避免这个问题;不要在索引中放置Sitecore ID。也不是Guid。 (还有其他解决方法,但我在这里向您展示更简单的方法)。

使用item.ID.ToShortID() - 这会生成一个没有花括号而没有破折号的Guid。当您稍后想要比较(或查询)时,只需使用相同的.ToShortID()方法匹配它。

答案 1 :(得分:1)

对我来说,看起来您的原始值不包含大括号。

如果字段值包含花括号(和storageType =“YES”),Luke将显示索引为索引数据的索引值(根据使用的分析器可能会有很大不同)。

如果您真的希望索引数据包含大括号,请设置indexType =“UN_TOKENIZED”或为字段选择类似Lucene.Net.Analysis.WhitespaceAnalyzer的内容。

相关问题