我有一个TextField
数据类型
我想搜索该字段的最后一个索引是否有特定的单词,
例如。
我的字段为title
,其值为Elligator Red Lace Men's Running Sports Shoes
现在我想搜索标题中包含Shoes
作为最后一个单词的文档。
答案 0 :(得分:1)
您是否尝试过SOLR正则表达式搜索? (由SOLR 4.0+支持。)
q=title:/.*Shoes/
为此,标题字段必须是StringField
类型,因此它不是标记化的。
答案 1 :(得分:1)
您可以使用RegEx CharFilter在最后添加边界标记(因此,将 $ 替换为 [[END]] )。 $ 这里是行尾的正则表达式标记,只是为了清楚。
然后,在标记化之后,使用RegEx TokenFilter(令牌,而不是现在的Char)将任何没有该标记的令牌替换为空字符串。然后,你有另外一个只是去掉你的边界标记。你最终得到了一堆空标记(我认为这些标记被忽略)和你的单个最后一个字标记。我建议在copyField中执行此操作并将其用作提升。
您需要注意,在向边界标记添加边界标记之前,输入流实际上已将最后一个标记放在最后,并且边界标记文本不是标记生成器会破坏的内容。因此,您可能需要使用另一个Char Filter或甚至客户端预处理字符串。