如何进行包含特殊字符(如(-、等)的solr搜索?

如何进行包含特殊字符(如(-、等)的solr搜索?,solr,lucene,Solr,Lucene,我需要用特殊字符(-)搜索像BEBIL1407-GREEN这样的字符串,但是它被忽略了-并且只用BEBIL1407搜索。我需要用一个空洞的词来搜索。我使用的是solr_4.5.1 查询示例: q=BEBIL1407-GREEN&qt=select&start=0&rows=24&fq=clg%3A%222%22&fq=isAproved%3A%22Y%22&fl=id 您的问题是关于搜索BEBIL1407-GREEN但查找BEBIL1407 您没

我需要用特殊字符(-)搜索像
BEBIL1407-GREEN
这样的字符串,但是它被忽略了-并且只用
BEBIL1407
搜索。我需要用一个空洞的词来搜索。我使用的是solr_4.5.1

查询示例:

q=BEBIL1407-GREEN&qt=select&start=0&rows=24&fq=clg%3A%222%22&fq=isAproved%3A%22Y%22&fl=id

您的问题是关于搜索
BEBIL1407-GREEN
但查找
BEBIL1407

您没有发布您的模式或查询解析器

使用字段类型为“text\u general”的on字段“text”作为默认solr

您可以使用solr测试从单词(在实文本中)到索引中相应标记的方式

对于“文本概述”,单词“BEBIL1407-GREEN”指向两个标记:“BEBIL1407”和“GREEN”

如果您的单词以连字符(减号)开头,标准解析器确实支持这一点。但在这种情况下,最有可能的是标记器是“查找意外文档”的原因

解决方案:

  • 你可以用短语搜索。在这种情况下,
    “BIBIL1407-GREEN”
    也会找到
    “BIBIL1407-GREEN”
  • 您可以使用其他字段类型,例如带有

希望这对您有所帮助,否则请发布您的搜索字段和schema.xml中的定义…

您在搜索中使用的字段是否使用了标记化程序?您好,我使用的是文本\u常规字段类型,分隔符为WhitespaceTokenizerFactory请查找上面的代码段,我正在使用WhitespaceTokenizerFactorysearch@sravan,因此,在分析屏幕中,生成的令牌仅显示在以下位置:“bibil1404绿色<代码>?您是否为搜索设置了默认字段?这个字段是否来自FieldTypetext\u general`?是的,我在solrConfig.xml中设置了一个默认字段,并在schema.xml中定义了它