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
Search 带连字符的Solr精确搜索_Search_Solr_Lucene - Fatal编程技术网

Search 带连字符的Solr精确搜索

Search 带连字符的Solr精确搜索,search,solr,lucene,Search,Solr,Lucene,我试图在标题中的Solr中搜索一个只包含字符串1604-04的术语。但是结果是包含1604或1604的任何东西。强制solr搜索1604-04的精确字符串的语法是什么?如果您只想要精确匹配,请使用字符串字段或带有关键字标记器的文本字段作为标记器。这些将保持您的令牌作为一个条目的完整性,并且不会将其拆分为多个令牌 不同之处在于,如果您将文本字段与关键字标记器一起使用,您仍然可以应用其他筛选器,例如小写筛选器,而字符串字段将逐字存储任何内容,而无需进行任何进一步的处理。如果您只希望精确匹配,请使用字

我试图在标题中的Solr中搜索一个只包含字符串1604-04的术语。但是结果是包含1604或1604的任何东西。强制solr搜索1604-04的精确字符串的语法是什么?

如果您只想要精确匹配,请使用字符串字段或带有关键字标记器的文本字段作为标记器。这些将保持您的令牌作为一个条目的完整性,并且不会将其拆分为多个令牌


不同之处在于,如果您将文本字段与关键字标记器一起使用,您仍然可以应用其他筛选器,例如小写筛选器,而字符串字段将逐字存储任何内容,而无需进行任何进一步的处理。

如果您只希望精确匹配,请使用字符串字段或带有关键字标记器的文本字段作为标记器。这些将保持您的令牌作为一个条目的完整性,并且不会将其拆分为多个令牌


不同之处在于,如果将Textfield与关键字标记器一起使用,则仍然可以应用其他筛选器,例如小写筛选器,而字符串字段将逐字存储任何内容,而无需进行任何进一步的处理。

您也可以使用经典标记器。经典标记器保留与标准标记器相同的行为,但有以下例外:-

单词在连字符处拆分,除非单词中有数字,在这种情况下,标记不拆分,并且 保留数字和连字符


这意味着如果有人搜索1604-04,则此标记器不会将搜索字符串分成两个标记。

您也可以使用经典标记器。经典标记器保留与标准标记器相同的行为,但有以下例外:-

单词在连字符处拆分,除非单词中有数字,在这种情况下,标记不拆分,并且 保留数字和连字符


这意味着,如果有人搜索1604-04,则此标记器不会将搜索字符串拆分为两个标记。

您的分析器将“1604-04”拆分为两个术语,“1604”和“04”。您已收到关于如何更改分析以停止这样做的答案

更改您的分析不是最佳解决方案(根据您所写的内容,无法完全确定)。使用a将是实现这一点的常用方法。您可以使用短语查询,方法是将其括在引号中:

field:"1604-04"

这仍将分析并将其分为两个术语,但它将按顺序查找这些术语。因此,该查询将匹配“1604-04”和“1604 04”,而不是“1604其他东西04”。

您的分析器将“1604-04”分为两个术语,“1604”和“04”。您已收到关于如何更改分析以停止这样做的答案

更改您的分析不是最佳解决方案(根据您所写的内容,无法完全确定)。使用a将是实现这一点的常用方法。您可以使用短语查询,方法是将其括在引号中:

field:"1604-04"

这仍将分析并将其分为两个术语,但它将按顺序查找这些术语。因此,该查询将匹配“1604-04”和“1604 04”,而不是“1604其他东西04”。

非常感谢。它引导我们找到正确的解决方案。实际上,我们最终使用了经典的标记器。非常感谢。它引导我们找到正确的解决方案。实际上,我们最终使用了经典的标记器。