Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/306.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Solr搜索查询区分大小写_Java_Apache_Solr - Fatal编程技术网

Java Solr搜索查询区分大小写

Java Solr搜索查询区分大小写,java,apache,solr,Java,Apache,Solr,我试图使用Solr搜索一些名为FirstName的记录 abcd Abcd abcD ABcd abCd abCD 现在我正在尝试使用通配符支持进行搜索。 我需要了解搜索在区分大小写方面是如何工作的 e、 g.如果我将FirstName参数作为ab*Vs ab*传递,将返回哪些记录 是否有办法使搜索区分大小写或不区分大小写?这取决于如何在schema.xml中定义字段。如果在索引和查询时使用,则所有查询都不区分大小写。否则它将区分大小写 <filter class="solr.Lower

我试图使用Solr搜索一些名为FirstName的记录

abcd
Abcd
abcD
ABcd
abCd
abCD
现在我正在尝试使用通配符支持进行搜索。 我需要了解搜索在区分大小写方面是如何工作的

e、 g.如果我将FirstName参数作为ab*Vs ab*传递,将返回哪些记录


是否有办法使搜索区分大小写或不区分大小写?

这取决于如何在schema.xml中定义字段。如果在索引和查询时使用,则所有查询都不区分大小写。否则它将区分大小写

<filter class="solr.LowerCaseTokenizerFactory"/>

您可以在模式中配置它。例如:

<fieldType name="text" class="solr.TextField" positionIncrementGap="100">
<analyzer type="query">
<filter class="solr.LowerCaseFilterFactory"/>
</analyzer>
</fieldType>


表示该字段被视为查询的小写。这给人的印象是不区分大小写的搜索。

默认情况下,值与存储值完全匹配。如果希望字段不区分大小写,通常的方法是使用使用小写筛选器的字段类型,使所有索引内容大小写相同,实际上使搜索不区分大小写(因为查询值也将是小写的)

示例内容针对“文本”和“文本”字段类型执行此操作:

<filter class="solr.LowerCaseFilterFactory"/>

然而,在一些特定的领域,通配符查询的小写自动处理可能会造成问题,并且。如果字段已经小写,则3.6和4.0应以正确的方式自动执行通配符搜索


如果您没有获得3.6之前的正确行为,我建议在使用通配符时将查询中的名称小写(只要您在索引时也应用了小写FilterFactory)。

solr模式中默认定义的字段的工作方式非常不同

数据类型
'string'
将单词存储为不完整的精确字符串

'text\u general'
通常执行标记化和辅助处理(例如不区分大小写和整个字符串匹配)。当我们想匹配句子的一部分时,它对所有场景都非常有用

如果以下示例“搜索到句子”被索引到两个字段,我们必须精确搜索到句子中的搜索,以从字符串字段中获得命中,而在文本为“常规”的情况下,它将返回不同的结果

在这里,卖方名称将在搜索字符串中精确匹配,而产品名称将在上面的整个句子中搜索

例如:

<field name="seller_name" type="string" indexed="true" stored="true"/>
<field name="product_name" type="text_general" indexed="true" stored="true"/>

从solr 5开始,这将需要一个标记器-