在该字段的最后索引处具有特定单词的查询文档

时间:2015-11-01 13:06:21

标签: solr solrj

我有一个TextField数据类型

的字段

我想搜索该字段的最后一个索引是否有特定的单词,

例如。

我的字段为title,其值为Elligator Red Lace Men's Running Sports Shoes

现在我想搜索标题中包含Shoes作为最后一个单词的文档。

2 个答案:

答案 0 :(得分:1)

您是否尝试过SOLR正则表达式搜索? (由SOLR 4.0+支持。)

q=title:/.*Shoes/

为此,标题字段必须是StringField类型,因此它不是标记化的。

答案 1 :(得分:1)

您可以使用RegEx CharFilter在最后添加边界标记(因此,将 $ 替换为 [[END]] )。 $ 这里是行尾的正则表达式标记,只是为了清楚。

然后,在标记化之后,使用RegEx TokenFilter(令牌,而不是现在的Char)将任何没有该标记的令牌替换为空字符串。然后,你有另外一个只是去掉你的边界标记。你最终得到了一堆空标记(我认为这些标记被忽略)和你的单个最后一个字标记。我建议在copyField中执行此操作并将其用作提升。

您需要注意,在向边界标记添加边界标记之前,输入流实际上已将最后一个标记放在最后,并且边界标记文本不是标记生成器会破坏的内容。因此,您可能需要使用另一个Char Filter或甚至客户端预处理字符串。