Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/solr/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
SOLR 7.5带未修剪空白的查询_Solr_Whitespace - Fatal编程技术网

SOLR 7.5带未修剪空白的查询

SOLR 7.5带未修剪空白的查询,solr,whitespace,Solr,Whitespace,我正在使用Solr7.5。我想搜索一个由空格包围的字母。看起来SOLR正在修剪每个令牌和我的查询。例: q= text:" D " 这将返回以下结果: text=我需要一些D电池 text=富兰克林·D·罗斯福 文本=打印的表格D/L 如何设置查询格式,以便只显示第一个结果? 我尝试了以下方法: 正文:D\ text:D%20由于您只希望在单个标记内进行精确、简单的子字符串匹配,因此可以使用关键字标记器并使用通配符进行搜索。KeywordTokenizer将所有内容作为单个

我正在使用Solr7.5。我想搜索一个由空格包围的字母。看起来SOLR正在修剪每个令牌和我的查询。例:

q= text:" D "
这将返回以下结果:

text=我需要一些D电池

text=富兰克林·D·罗斯福

文本=打印的表格D/L

如何设置查询格式,以便只显示第一个结果? 我尝试了以下方法:

正文:D\


text:D%20

由于您只希望在单个标记内进行精确、简单的子字符串匹配,因此可以使用关键字标记器并使用通配符进行搜索。KeywordTokenizer将所有内容作为单个标记保存,这意味着我需要一些D电池。将按原样编制索引,无需任何进一步处理


然后,您应该能够使用q=字段:*D*

来查询该值,这取决于字段的定义方式。标准标记器将根据空格和标点/特殊字符进行拆分。是否要包含以D开头或以D结尾的条目?@MatsLindh我只需要D本身,因此只返回第一个结果。所以我想任何以D开头的字段都可以。@MikePone:你能为你的字段共享字段类型吗…?我必须创建一个只使用关键字标记器的新字段类型,并用该新类型的新字段替换现有字段并重新索引。我这么做之后,它就像你说的那样工作了。结果是内置类型lowercase有关键字标记器加上lowercase过滤器,这正是我想要的,因此,将字段定义为小写类型为我提供了所需的内容。LowercaseFilter是为数不多的多线程过滤器之一,也就是说,当使用通配符进行查询时,它们也能正常工作,因此应该可以正常工作:-