在solr中禁用小写字段的小写字段

问题描述:

我使用的是solr 3.5并添加了一个自定义字段,它通过在schema.xml中定义以下内容将类别添加到文档中。在solr中禁用小写字段的小写字段

<field name="category" type="string" indexed="true" stored="true"/> 

现在我正在实现一个Search-Web-Client,它应该显示该类别字段的所有索引值。我这样做,用下面的查询:

facet=true&facet.field=category&q=* 

结果如下所示:

<response> 
<lst name="responseHeader"> 
    <int name="status">0</int> 
    <int name="QTime">45</int> 
    <lst name="params"> 
    <str name="facet.field">category</str> 
    <str name="q">*</str> 
    <str name="facet">true</str> 
    </lst> 
</lst> 
<result name="response" numFound="0" start="0" maxScore="0.0"/> 
    <lst name="facet_counts"> 
    <lst name="facet_queries"/> 
    <lst name="facet_fields"> 
    <lst name="category"> 
    <int name="category1">0</int> 
    <int name="category2">0</int> 
    <int name="category3">0</int> 
    <int name="category4">0</int> 
    <int name="category5">0</int> 
    </lst> 
</lst> 
<lst name="facet_dates"/> 
    <lst name="facet_ranges"/> 
    </lst> 
</response> 

我的Web客户端显示类别中的所有名字,但都写在小写的,而是存储在索引与大写字母。

<response> 
<result> 
    <doc> 
    ... 
    <str name="category">Category1</str> 
    ... 
    </doc> 
</result> 
</response> 
  • 解决方案一:是否有可能迫使小值名称是区分大小写?
  • 解决方案b:是否有另一个查询会给索引中存储的每个类别的值?
+1

能否请您发表您的字符串的字段类型定义在'schema.xml'?这不是默认的,对吗? – javanna 2012-01-16 16:43:18

+0

感谢您的帮助,它是默认定义。但我需要重新编制我的网站。 – jpee 2012-01-17 09:20:00

+0

太棒了,很高兴你解决了! – javanna 2012-01-17 09:22:17

我怀疑你的LowerCaseFilterFactory用于你的string类型的字段。在这种情况下,索引值为category1,但存储的值仍然是您提交的原始文件Category1

您应该从您的schema.xml中的string fieldType定义中删除LowerCaseFilterFactory以具有所需的分面行为。

事实上,这是常见的使用与简单的字段类型方面的具体copyField,没有TokenizerFilter

+0

感谢您的回答。我将text_general(具有LowerCaseFilterFactory)的类型更改为字符串。字符串没有这样的过滤器。我忘了删除索引并重新编制我的网页。之后,一切正常。 – jpee 2012-01-17 09:17:02