忽略斜杠顺序的Solr
我有一个名为:忽略斜杠顺序的Solr,solr,datastax-enterprise,solr4,Solr,Datastax Enterprise,Solr4,我有一个名为:text 该字段包含如下值:12/1 还有:1/12 问题是当我查询时:文本:“1/*” 它还发现,12/1就像斜杠没有任何意义一样 如何按顺序限制结果 (我试过文本:“1\/*”但不起作用) 字段的类型: <fieldType class="org.apache.solr.schema.TextField" name="TextField"> 问题在于,您使用的是执行文本标记化的文本字段类型,然后是附加过滤,如小写等。在您的情况下,索引中没有值12/1,但对于第一个
text
该字段包含如下值:12/1
还有:1/12
问题是当我查询时:文本:“1/*”
它还发现,12/1
就像斜杠没有任何意义一样
如何按顺序限制结果
(我试过文本:“1\/*”
但不起作用)
字段的类型:
<fieldType class="org.apache.solr.schema.TextField" name="TextField">
问题在于,您使用的是执行文本标记化的
文本字段类型,然后是附加过滤,如小写等。在您的情况下,索引中没有值12/1
,但对于第一个和第二个值,您有两个值,12
和1
,因此,搜索1/*
将与这两条记录匹配,因为搜索将针对输入标记化后生成的值1
要防止字符串标记化,您需要:
- 或者改用
StrField
type,但在这种情况下,管柱将按原样进行索引,无需下套管等
- 如果希望使用小写等,则为字段定义一个新类型,但使用
solr.KeywordTokenizerFactory
作为标记器,并添加相应的过滤器
你可以在网上阅读更多。另外请注意,从第6版开始,text
数据的默认类型是StrField
,如果需要标记化等,则需要明确定义TextField
。我已将类型更改为StrField(重新索引所有内容),现在“1/*”根本不起作用,我也尝试了“1\/*”,知道为什么吗?抱歉,它起作用了,我只需要删除引号:1/*