Solr 忽略斜杠顺序

Solr ignoring slash order

我有一个名为的索引字段:texts

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

还有:1/12

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

它还发现 12/1 好像斜线没有任何意义。

如何按顺序限制结果?

(我已经试过 texts:"1\/*" 但它不起作用)

字段类型:

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

问题是您使用的 TextField 类型执行文本标记化,然后进行额外的过滤,例如小写等。在您的情况下,您没有价值12/1 在您的索引中,但是对于第一个和第二个值,您有 2 个值,121,因此您搜索 1/* 将匹配两个记录,因为搜索将针对输入标记化后生成的值 1 执行。

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

  • 要么使用 StrField 类型代替 - 但在这种情况下,字符串将按原样索引,没有小写等
  • 如果你想有小写等,然后为你的字段定义一个新类型,但使用 solr.KeywordTokenizerFactory 作为分词器,并添加相应的过滤器。

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