solr - SOLR 是否支持 String 类型字段的子字符串函数?

标签 solr substring

在我的查询中,我需要返回字段的子字符串(匹配特定的正则表达式)而不是整个字段。查看支持的函数列表( http://wiki.apache.org/solr/FunctionQuery#Available_Functions )似乎没有这样的现成函数!有人知道推荐的解决方案是什么吗?

最佳答案

您可以使用 copyField其 fieldType 有 PatternCaptureGroupFilter 。您的 copyField 应该只有正则表达式匹配的部分。

例如:你的原始字段就像

url: http://www.example.com

但您不希望 http:// 部分显示在检索到的字段中。

在架构中定义一个新的 fieldType,如下所示:

<fieldType name="url_base" class="solr.TextField" positionIncrementGap="100">
 <analyzer>
   <tokenizer class="solr.KeywordTokenizerFactory"/>
   <filter class="solr.PatternCaptureGroupFilterFactory" 
           pattern="https?://([a-zA-Z\-_0-9.]+)" 
           preserve_original="false"/>
 </analyzer>
</fieldType>

因此括号内的捕获组仅获取 www.example.com

然后像这样定义您的复制字段:

<field name="baseUrl" type="url_base" indexed="false" stored="true" />
<copyField source="url" dest="baseUrl" />

您的查询可以类似于 /search?q=url:example&fl=baseUrl

当然,这是假设 url 是一个文本字段。如果是字符串字段,则对其进行精确匹配或正则表达式匹配。

关于solr - SOLR 是否支持 String 类型字段的子字符串函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27410572/

相关文章:

Solr 增强直接匹配而不是模糊匹配

html - 在索引处的字符串中插入字符串(快速)

python-3.x - 如果子字符串重叠,如何计算Python中子字符串的数量?

根据条件替换 R 中字符串的第一个元素

elasticsearch - 如何在cassandra上安装搜索引擎?

solr - 为什么这个简单的 Solr 突出显示尝试失败?

java - 如何在Java中提取多个引用的子字符串

c++ - 为什么我的字符串没有像它应该的那样 split ?

spring - 如何使用 Spring Data Solr 搜索嵌套对象?

php - DisMax 解析用户查询和 q 或 fq 过滤结果