仅当字段不包含任何其他内容时,Solr匹配短语

仅当字段不包含任何其他内容时,Solr匹配短语,solr,Solr,如何使Solr只匹配具有给定短语的字段而不匹配其他内容?e、 g.myfield:“隐形眼镜”应与隐形眼镜相匹配,但不应与软隐形眼镜相匹配 编辑:请注意,在上面的示例中,我仍然需要词干。对于精确匹配,您可以将myfield设置为String类型,并且可以使用通配符进行搜索。这意味着精确的短语匹配和大小写匹配 您还可以使用WhitespaceTokenizerFactory,然后使用PorterStemFilterFactory对其进行词干分析,然后使用PositionFilterFactory“

如何使Solr只匹配具有给定短语的字段而不匹配其他内容?e、 g.
myfield:“隐形眼镜”
应与
隐形眼镜相匹配
,但不应与
软隐形眼镜相匹配


编辑:请注意,在上面的示例中,我仍然需要词干。

对于精确匹配,您可以将
myfield
设置为
String
类型,并且可以使用通配符进行搜索。这意味着精确的短语匹配和大小写匹配


您还可以使用
WhitespaceTokenizerFactory
,然后使用
PorterStemFilterFactory
对其进行词干分析,然后使用
PositionFilterFactory

“关键字TokenizerFactory:此标记化器将整个文本字段视为单个标记。”这可能会导致词干分析不可能?没错。仔细看了这个例子之后,我明白了。我将编辑我的答案。编辑接近但不精确,例如,
myfield:“算法”
将匹配
“算术复杂性”
,因为算法标记位于正确的位置。我想我将为一个包含令牌数量的额外字段编制索引,这样我就可以编写查询,比如
myfield:“algorithm”和num\u words:1
。虽然代码中需要一些预处理,但我认为这是最简单的方法。我在这里还找到了另一种方法,在分析过程中添加左右标记(例如,将
算法
替换为
AAAAA算法ZZZZZ
),以便您可以搜索左/右/完全匹配。对我来说有点太粗糙,但对其他人可能有用: