[英]Using Spring Solr Data or Not for Flexible Requests as Like Backup?
[英]Using like operation in SOLR
我正在使用SOLR搜索引擎。
几天前,我提出了对给定列执行类似操作的要求。
例如:
Column name: Name
Content: Stackoverflow is good.
查询为
Name:("*overflow is*")
该查询应为我提供特定的“ Stackoverflow很好”。 结果是
此输入参数应视为整体输入。 不应将其视为自由文本搜索。 它应该在SQL中像“喜欢”操作一样工作。
为此,请使用此配置。
<fieldtype class="solr.TextField" name="string_wildcards" positionIncrementGap="100">
<analyzer type="index">
<tokenizer class="solr.StandardTokenizerFactory"/>
<filter class="solr.StandardFilterFactory"/>
<filter class="solr.LowerCaseFilterFactory"/>
<filter class="solr.TrimFilterFactory" />
<filter class="solr.EdgeNGramFilterFactory" minGramSize="2" maxGramSize="15"/>
</analyzer>
<analyzer type="query">
<tokenizer class="solr.StandardTokenizerFactory"/>
<filter class="solr.StandardFilterFactory"/>
<filter class="solr.LowerCaseFilterFactory"/>
<filter class="solr.TrimFilterFactory" />
<filter class="solr.KeywordTokenizerFactory"/>
</analyzer>
</fieldtype>
该查询没有给我“喜欢”操作所期望的结果。
例如:名称:(“ 溢出为 ”)
会搜索为“自由文本”,而不是“ LIKE”运算符。
它给我结果
我的预期结果只是第4点,其中上述配置给了我全部4个结果,这是错误的。
请根据我的要求为我提供正确的配置。
关键是,您可以使用StandardTokenizerFactory拆分/标记输入。 在这种情况下,您搜索*overflow
and is*
。
但是:左侧的通配符,例如
*溢出
默认情况下,solr不支持。 在这种情况下,您必须索引字段(列)“名称”两次。
这意味着:从类型string_wildcards添加一个文件名,你写了添加第二场-让调用它eman
:从类型left_wildcards_string(逆转名称)。 在此字段类型定义中,添加solr.ReversedWildcardFilterFactory
最后,您可以跨两个字段进行搜索。
关键字之间的默认布尔参数为OR,这就是为什么您获得全部4个结果的原因。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.