大小写敏感的,在敏感的同一领域的搜索
问题描述:
我的架构配置如下所示大小写敏感的,在敏感的同一领域的搜索
<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的方式对数据进行索引。
答
- 使用copyField与商店= false,并改变你对搜索客户端上
- 小写的字段。
- 基于额外标志(例如,区分大小写)创建a complex request processor with switch cases并执行不同的查询。
如果你需要做的大量的字段,你也可以定义替代请求处理程序和redefine aliases的领域指向区分大小写或不区分大小写的版本。