[英]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.