我得到Solr的结果如下:Solr的:查询语句返回某些情况下,结果并不为一些
- 体育
- 世界卫生组织
- %的
但我没有得到如下结果:
- Sport(UK)
- 世界卫生组织Organisat
- 1%的
所有这些都是这肯定包含这些短语的文本字段,我已经用在索引器NGRAM过滤器,这样的组合确实存在。 尽管solr UI的分析选项卡显示了我所期望的,但我没有在我的java输出中获得所需的结果。
我solrj代码如下:
query.setQuery("full_text:\"World Health Organisation\"");
另外,我要补充的\".."\
因为我总是在我的前端出现错误,如果我删除它们,一半的结果,否则我也弄不到场。
有人可以帮助我可能会失踪?
非常感谢!
编辑纳入:schema.xml中
<field name="full_text" type="text_en" indexed="true" stored="false" multiValued="true"/>
<copyField source="title" dest="full_text"/>
<copyField source="content" dest="full_text"/>
<fieldType name="text_en" class="solr.TextField" positionIncrementGap="100">>
<analyzer type="index">
<tokenizer class="solr.StandardTokenizerFactory"/>
<filter class="solr.StopFilterFactory" ignoreCase="true" words="lang/stopwords_en.txt"/>
<filter class="solr.LowerCaseFilterFactory"/>
<filter class="solr.EnglishPossessiveFilterFactory"/>
<filter class="solr.KeywordMarkerFilterFactory" protected="protwords.txt"/>
<filter class="solr.PorterStemFilterFactory"/>
<filter class="solr.NGramFilterFactory" minGramSize="3" maxGramSize="20"/>
</analyzer>
<analyzer type="query">
<tokenizer class="solr.StandardTokenizerFactory"/>
<filter class="solr.SynonymFilterFactory" synonyms="synonyms.txt" ignoreCase="true" expand="true"/>
<filter class="solr.StopFilterFactory" ignoreCase="true" words="lang/stopwords_en.txt" />
<filter class="solr.LowerCaseFilterFactory"/>
<filter class="solr.EnglishPossessiveFilterFactory"/>
<filter class="solr.KeywordMarkerFilterFactory" protected="protwords.txt"/>
<filter class="solr.PorterStemFilterFactory"/>
</analyzer>
</fieldType>
full_text的高清解决方案: 我想通了什么问题了。对于“运动(英国)”和“1%”的情况,我使用的记号器是删除所有特殊字符,所以我改变了我的记号器。 至于“世界卫生组织:”,它是由将组织改为Organis的stemmer引起的,并且像“Organisat”这样的查询被保留为原样 因此,我没有得到结果,因此我删除了stemmer,因为我正在使用NGRAM过滤器。
希望这会帮助别人,从长远来看。:)
在日志中,您可以检查solr收到的确切查询是什么?此外,您还想匹配使用双引号的原因。 – YoungHobbit
查询与它在分析仪上显示的方式完全相同。是的,我试图得到一个完全匹配,但问题是,我得到了“世界卫生组织”和“世界卫生组织”相同的结果,但我没有得到“世界卫生组织”的结果。为什么会发生? – catchingPatterns
此外,由于我使用的引号表示完全匹配,为什么不会在结果集中显示“1%”或“Sport UK”这样的短语? – catchingPatterns