我正试图在仅包含字符串1604-04的标题中搜索Solr中的术语。但结果会返回任何包含1604或04的结果。语法是什么将迫使solr搜索1604-04的确切字符串?Solr使用连字符精确搜索
回答
您还可以使用经典标记生成器 .The经典标记生成器保留了相同的行为标准分词器但下列情况除外: -
字在连字符分割,除非有字的数,在这种情况下,令牌不会被拆分,并且保留数字和连字符(012)。
这意味着如果有人搜索1604-04那么这个Tokenizer不会将搜索字符串分解为两个标记。
如果只需要精确匹配,请使用字符串字段或带有KeywordTokenizer的文本字段作为标记器。这些将令您的令牌保持原样,并且不会将其分解为多个令牌。
不同之处在于,如果您将Textfield与KeywordTokenizer结合使用,则仍然可以应用其他过滤器(例如LowercaseFilter),而字符串字段将逐字存储任何内容,而无需进行任何进一步处理。
非常感谢。它引导我们找到正确的解决方案。我们实际上最终使用了Classic Tokenizer。 – pcroadkill
您的分析仪将“1604-04”分为两个术语“1604”和“04”。您已经收到关于如何更改分析以停止这样做的答案。
更改你的分析我不是最好的解决方案(不能完全确定根据你写的内容)。使用phrase query将是通常的做法。您可以通过在引号包裹它使用短语查询:
field:"1604-04"
这仍然将分析,并将其分为两个方面,但它会寻找在序列这些条款。所以,该查询将匹配“1604-04”和“1604 04”,但是而不是“1604某些其他的东西04”。
- 1. Solr精确搜索字词
- 2. Solr的查询Wildcardquery在精确的搜索字符串
- 3. Solr搜索精确的短语/子字符串
- 4. Solr 6 DateRangeField搜索精确匹配
- 5. 弹性搜索在query_string中使用通配符精确搜索
- 6. 使用Lucene的精确字符串匹配。搜索
- 7. Eclipse:使用精确匹配字符串搜索
- 8. PHP精确搜索
- 9. 在字符串数组中搜索精确的字符串?
- 10. 使用Lucene的精确短语搜索?
- 11. 用Apache Solr搜索名字
- 12. Django admin中的精确字段搜索
- 13. 使用Solr搜索部分字词
- 14. 提炼Solr搜索,获得精确匹配?
- 15. 如何在solr 1.3中获得精确的搜索结果?
- 16. 搜索子字符与Rails Solr
- 17. 搜索特定字符串solr
- 18. 只搜索精确匹配
- 19. solr像使用text_en搜索
- 20. Solr搜索 - 使用查询
- 21. Solr搜索:按字母搜索名称
- 22. Solr搜索“哈希符号”
- 23. Solr的:搜索与特殊字符与短语搜索
- 24. 与jquery中的精确搜索字符串匹配
- 25. XML文件中的精确字符串搜索?
- 26. Solr/SolrNet - 使用通配符进行逐字母搜索
- 27. 使用solr suggestor搜索中间或后缀字符串?
- 28. 在solr查询中用特殊字符搜索通配符
- 29. 索引/搜索PDF内容使用Solr
- 30. Solr的 - 搜索字符串中的字符
谢谢。这个标记器做了诀窍。 – pcroadkill