繁体   English   中英

Solr:多词同义词

[英]Solr: Multi-word synonyms

我正在开发一组同义词,您可以在其中找到一些多词表达式,例如:

黑莓=>黑莓

在分析阶段,使用/admin/analysis.jsp工具,我可以看到结果是正确的。

诸如“ quiero una black berry”之类的查询将返回以下序列:

org.apache.solr.analysis.StandardTokenizerFactory {luceneMatchVersion = LUCENE_36}:

position    1   2   3   4
term text   quiero  una black   berry
startOffset 0   7   11  17
endOffset   6   10  16  22
type    <ALPHANUM>  <ALPHANUM>  <ALPHANUM>  <ALPHANUM>

org.apache.solr.analysis.SynonymFilterFactory {synonyms = lang / synonyms_es.txt,expand = false,ignoreCase = true,luceneMatchVersion = LUCENE_36}:

position    1   2   3
term text   quiero  una blackberry
type    <ALPHANUM>  <ALPHANUM>  SYNONYM
startOffset 0   7   11
endOffset   6   10  22

但是,如果我在“真实”查询中尝试使用此语句,则请求处理程序(edismax处理程序的演变),标记“ black”和“ berry”不会被“ blackberry”代替。

我在这里看到,您可以通过修改FieldQParser插件来解决这种情况。

无论如何,由于这样的帖子是在3年前发布的,所以我想知道Solr内部是否有解决此问题的方法,而不必扩展某些插件。

谢谢。

根据此链接,您应该搜索带引号的“黑莓”,因为使用不带引号的“黑莓”会导致OR查询,即黑或莓

在Solr-6.5.0中,您可以通过设置以下参数来启用查询时间的多词同义词

从文档

母猪参数

在空白处分割:如果设置为false,则将一键提供给文本分析以空格分隔的术语序列,从而启用对术语序列进行操作的分析过滤器的正确功能,例如多词同义词和带状疱疹。 默认值为true:对每个单独的空格分隔的术语分别调用文本分析。

[synonym.txt]

black berry => blackberry

[例]

q=black berry
&sow=false
&debug=query

[调试响应]

<lst name="debug">
<str name="rawquerystring">black berry</str>
<str name="querystring">black berry</str>
<str name="parsedquery">_text_:blackberry</str>
<str name="parsedquery_toString">_text_:blackberry</str>
<str name="QParser">LuceneQParser</str>
</lst>

现在您可以从调试响应中看到我搜索了black berry ,但是同义词过滤器工厂映射到了我在synonym.txt中提到的单词。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM