Solr忽略斜杠顺序

时间:2019-01-14 22:22:07

标签: solr datastax-enterprise solr4

我有一个名为texts

的索引字段

该字段包含以下值:12/1

还有:1/12

问题是当我查询:texts:"1/*"

还发现12/1就像斜杠没有任何意义。

如何按顺序限制结果?

(我尝试过texts:"1\/*",但是它没有用)

字段类型:

<fieldType class="org.apache.solr.schema.TextField" name="TextField">

1 个答案:

答案 0 :(得分:1)

问题是您使用的是TextField类型,该类型执行文本的标记化,然后进行其他过滤,例如小写字母等。在您的情况下,您没有值{{ 1}},但第一个和第二个值都有两个值12/112,因此搜索1将与两个记录都匹配,因为搜索将是对输入标记化后生成的值1/*执行。

要防止字符串被标记化,您需要:

  • 可以改用1类型-但在这种情况下,字符串将按原样索引,不使用小写字母,等等。
  • 如果要使用较小的外壳等,请为您的字段定义一个新类型,但使用StrField作为标记符,并添加相应的过滤器。

您可以在DataStax documentation中阅读更多内容。另请注意,从版本6开始,solr.KeywordTokenizerFactory数据的默认类型为text,如果需要标记化等,则需要显式定义StrField