我正在尝试使用SOLR搜索一些具有FirstName的记录;SOLR搜索查询大小写敏感度
abcd
Abcd
abcD
ABcd
abCd
abCD
现在我正在尝试使用通配符进行搜索。 我需要了解搜索在区分大小写方面的工作情况。
例如如果我将FirstName参数作为ab * Vs Ab *传递,那么将返回哪些记录?
是否有某种方法可以使搜索成为区分大小写或不区分大小写?
请帮忙。谢谢。
我正在尝试使用SOLR搜索一些具有FirstName的记录;SOLR搜索查询大小写敏感度
abcd
Abcd
abcD
ABcd
abCd
abCD
现在我正在尝试使用通配符进行搜索。 我需要了解搜索在区分大小写方面的工作情况。
例如如果我将FirstName参数作为ab * Vs Ab *传递,那么将返回哪些记录?
是否有某种方法可以使搜索成为区分大小写或不区分大小写?
请帮忙。谢谢。
这取决于您如何在schema.xml中定义字段。如果在索引和查询时使用LowerCaseFilterFactory,则所有查询都将不区分大小写。否则,它将区分大小写。
<filter class="solr.LowerCaseTokenizerFactory"/>
您可以在您的模式中配置它。例如:
<fieldType name="text" class="solr.TextField" positionIncrementGap="100">
<analyzer type="query">
<filter class="solr.LowerCaseFilterFactory"/>
</analyzer>
</fieldType>
表示该字段被认为是小写字母用于查询,这会使印象成为不区分大小写的搜索。
默认情况下,值与存储的值完全匹配。如果你想要一个字段不区分大小写,通常的方法是使用一个使用小写字母过滤器的字段类型,使得所有索引内容都是相同的大小写,并且实际上使得搜索大小写不敏感(因为查询值也是小写的)。
的例子内容做这行的“文本”和“text_en”字段类型:
<filter class="solr.LowerCaseFilterFactory"/>
有不过是几个特定的领域,其中lowercasing野生卡查询AUTOMAGIC操作可能造成的麻烦,并MultitermQueryAnalysis was introduced in Solr 3.6 and 4.0 to handle those situations 。如果字段已经缩小,则3.6和4.0应该自动以正确的方式进行通配符搜索。
如果你没有在3.6之前得到正确的行为,我会建议在查询中降低名称(只要你在索引时也应用了LowerCaseFilterFactory)。
默认定义solr模式中的字段工作方式非常不同。
数据类型'string'
将单词存储为完整的字符串不完整。
虽然'text_general'
通常执行标记化和二级处理(如不区分大小写和整个字符串匹配)。当我们想匹配句子的一部分时,它对于所有场景非常有用。
如果下面的示例“搜索到句子”被索引到两个字段中,我们必须严格搜索句子中的搜索以获得来自字符串字段的匹配,而它会在返回不同结果的情况下text_general。
这里的卖家名称将完全匹配搜索字符串,而产品名称将搜索到上面的整个句子。
实施例:
<field name="seller_name" type="string" indexed="true" stored="true"/>
<field name="product_name" type="text_general" indexed="true" stored="true"/>
作为solr的5的,这将需要一个标记 - –
chrismarx
2015-10-21 15:22:17