大小写敏感的,在敏感的同一领域的搜索

问题描述:

我的架构配置如下所示大小写敏感的,在敏感的同一领域的搜索

<fieldType class="org.apache.solr.schema.TextField" name="TextField"> 
<analyzer> 
    <tokenizer class="solr.StandardTokenizerFactory"/> 
    <filter class="solr.LowerCaseFilterFactory"/> 
</analyzer> 
</fieldType> 

<field indexed="true" multiValued="false" name="message" stored="true" type="TextField"/> 

的代码是这样

if(casesensitive == true) 
{ 
    // do case sensitive search 
} 
else 
{ 
    // do case in-sensitive search 
    http://1.2.3.4/solr/a.b/select?q=message:"hit" 
} 

我能够正确地做这个领域不区分大小写。但是如果我输入“Hit”,我希望SOLR返回匹配相同大小写的记录。

此外,我不想在我的Solr中创建单独的字段,我想从同一字段获取记录。任何帮助,将不胜感激。

我不认为它是可能的。如果要实现这两种情况,则需要添加另一个字段。

您需要有2个字段。其中一个你将添加LowerCase Filter工厂,另一个不添加。

使用单个字段是不可能的。 Solr将按照您定义fieldType的方式对数据进行索引。

  1. 使用copyField与商店= false,并改变你对搜索客户端上
  2. 小写的字段。
  3. 基于额外标志(例如,区分大小写)创建a complex request processor with switch cases并执行不同的查询。

如果你需要做的大量的字段,你也可以定义替代请求处理程序和redefine aliases的领域指向区分大小写或不区分大小写的版本。