使用Sitecore 8.2.1
我已经在Sitecore的ContentSearch配置中定义了一个自定义索引。我在索引中定义了计算字段'MinPrice'和'MaxPrice。
字段显示在索引中,但我想查询这些小数值的范围或使用大于或小于。
我正在使用Sitecore PredicateBuilder来创建查询。
我已将计算字段定义为:
<fields hint="raw:AddComputedIndexField">
<field fieldName="minprice">
~.MinPriceIndexField, <ref_assembly>
</field>
</fields>
还有fieldMap中的条目:
<field fieldName="minprice" storageType="YES" indexType="ANALYZED" vectorType="NO" boost="1f" type="System.Decimal"
settingType="Sitecore.ContentSearch.LuceneProvider.LuceneSearchFieldConfiguration, Sitecore.ContentSearch.LuceneProvider">
<analyzer type="Sitecore.ContentSearch.LuceneProvider.Analyzers.LowerCaseKeywordAnalyzer, Sitecore.ContentSearch.LuceneProvider" />
</field>
我也尝试过: indexTypes为UN_TOKENIZED,TOKENIZED。 使用System.Double而不是System.Decimal。
根据我的理解,在使用Type.GetType(字符串类型)构建LuceneSearchFieldConfiguration时确定Type。 然后,LuceneFieldBuilder.CreateField方法根据Type确定该字段应该是NumericField还是Field。
使用Luke,这些字段似乎没有被编入索引作为数字。当在Luke中使用范围进行搜索时,这些被视为字符串范围,即minprice:[1 TO 3]将错误地包含150,250等。使用带有谓词构建器的应用程序并使用Between方法,索引值将被视为字符串并且大于和少于不影响结果。
我还尝试将字段的字段阅读器定义为PrecisionNumericFieldReader。
感谢您的帮助,