Solr:多词同义词

时间:2012-07-18 14:52:26

标签: solr synonym

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

黑莓=>黑莓

在分析阶段,使用/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”替换。

我见过here您可以通过修改FieldQParser插件来解决这种情况。

无论如何,由于这篇帖子大约在3年前制作,我想知道是否有一些解决Solr内部问题的方法,避免扩展一些插件。

感谢。

2 个答案:

答案 0 :(得分:0)

基于此link,您应该搜索带有引号的“黑莓”,因为使用它而不引用会导致OR查询,即黑色OR浆果

答案 1 :(得分:0)

在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中提到的单词。