首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Solr:多单词同义词

Solr:多单词同义词
EN

Stack Overflow用户
提问于 2012-07-18 22:52:26
回答 2查看 1.1K关注 0票数 2

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

黑莓=>黑莓

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

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

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

代码语言:javascript
复制
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 =lang/同义词_es.txt,expand=false,ignoreCase=true,luceneMatchVersion=LUCENE_36}:

代码语言:javascript
复制
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中是否有解决这个问题的方法,而不必扩展一些插件。

谢谢。

EN

回答 2

Stack Overflow用户

发布于 2015-12-14 04:33:34

基于此link,您应该搜索带引号的"black berry“,因为使用它不带引号会导致OR查询,即black OR berry

票数 0
EN

Stack Overflow用户

发布于 2017-04-02 13:00:52

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

来自文档

sow参数

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

synonym.txt

代码语言:javascript
复制
black berry => blackberry

示例

代码语言:javascript
复制
q=black berry
&sow=false
&debug=query

调试-响应

代码语言:javascript
复制
<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>

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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11544216

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档