我正在尝试在标题中搜索Solr中的一个术语,该术语仅包含字符串1604-04。但是结果会返回包含1604或04的任何内容。强制solr搜索1604-04的确切字符串的语法是什么?
答案 0 :(得分:1)
如果只想要完全匹配,请使用字符串字段或带有KeywordTokenizer的文本字段作为标记生成器。这些将使您的令牌保持完整,只需一个条目,并且不会将其分解为多个令牌。
不同之处在于,如果您使用带有KeywordTokenizer的Textfield,您仍然可以应用其他过滤器,例如LowercaseFilter,而字符串字段将逐字存储任何内容而无需进一步处理。
答案 1 :(得分:1)
您还可以使用经典标记符。经典标记符保留与标准标记符相同的行为,但以下情况除外: -
单词用连字符分开,除非单词中有数字,在这种情况下,标记不会被分割 数字和连字符被保留。
这意味着如果有人搜索1604-04,那么此Tokenizer不会将搜索字符串分成两个令牌。
答案 2 :(得分:0)
您的分析仪将“1604-04”拆分为两个术语“1604”和“04”。您已收到有关如何更改分析以停止这样做的答案。
更改分析我不是最好的解决方案(根据您所写的内容无法完全确定)。使用phrase query通常是这样做的方法。您可以通过将其包装在引号中来使用短语查询:
field:"1604-04"
这仍然会分析并分成两个术语,但它会按顺序查找这些术语。因此,该查询将匹配“1604-04”和“1604 04”,但不“1604其他一些东西04”。