我的架构配置如下所示
<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"
}
我能够正确地对该字段进行不区分大小写的搜索。但如果我输入&#34; Hit&#34;,我希望SOLR返回匹配相同案例的记录。
另外我不想在我的Solr中创建一个单独的字段,我想从同一个字段中获取记录。任何帮助将不胜感激。
答案 0 :(得分:1)
我认为不可能。如果要实现这两种方案,则需要添加另一个字段。
您需要有2个字段。您将在其中添加LowerCase过滤器工厂,而另一个不添加。
使用单个字段,这是不可能的。 Solr将按照您定义fieldType的方式索引数据。
答案 1 :(得分:0)
您应该使用非存储的副本字段: https://cwiki.apache.org/confluence/display/solr/Copying+Fields http://docs.datastax.com/en/datastax_enterprise/4.8/datastax_enterprise/srch/srchCpyFld.html
答案 2 :(得分:0)
如果您需要为大量字段执行此操作,还可以为字段定义备用请求处理程序和redefine aliases以指向区分大小写或不区分大小写的版本。