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

Kam*_*ran 1 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" />
Run Code Online (Sandbox Code Playgroud)

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

在此输入图像描述

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

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

Mar*_*idy 6

实际上,因为您的字段是TOKENIZED,Sitecore会以它的方式存储您的ID,以避免出现其他情况.TOKENIZED意味着,您的ID将在Lucene内部分解,如下所示:

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

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

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

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