Sitecore lucene:如何将属性索引为数字字段以启用范围搜索

时间:2017-02-28 10:19:40

标签: lucene sitecore numeric

使用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。

感谢您的帮助,

0 个答案:

没有答案