繁体   English   中英

Solr搜索未返回完全匹配

[英]Solr search does not return exact match


我正在使用Solr 6来实现搜索引擎。 我面临的问题是,当我搜索该单词时,它会首先返回其他一些结果,而实际查询的数字是6。
例如,我正在搜索Cafe 9
这回我...

  • NECOS天然商店和咖啡馆
  • SATTAR BUKSH咖啡厅
  • 粉色卡迪拉克咖啡厅和餐厅
  • 咖啡馆岩石拉合尔
  • 咖啡馆首席扎克尔
  • 咖啡馆9


  • 我想要的是它在第9位显示Cafe 9 ,然后在第9位显示其他结果是完全匹配。



    我已经用text_general类型索引了所有字段,并附加了schema.xml。

    提前致谢。

      <fieldType name="text_general" class="solr.TextField" positionIncrementGap="100"> <analyzer type="index"> <tokenizer class="solr.StandardTokenizerFactory"/> <filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords.txt" /> <!-- in this example, we will only use synonyms at query time <filter class="solr.SynonymFilterFactory" synonyms="index_synonyms.txt" ignoreCase="true" expand="false"/> --> <filter class="solr.ApostropheFilterFactory"/> <filter class="solr.ShingleFilterFactory" maxShingleSize="5" outputUnigrams="true"/> <filter class="solr.LowerCaseFilterFactory"/> </analyzer> <analyzer type="query"> <tokenizer class="solr.StandardTokenizerFactory"/> <filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords.txt" /> <filter class="solr.SynonymFilterFactory" synonyms="synonyms.txt" ignoreCase="true" expand="true"/> <filter class="solr.ApostropheFilterFactory"/> <!-- <filter class="solr.ShingleFilterFactory" maxShingleSize="5" outputUnigrams="true"/> --> <filter class="solr.LowerCaseFilterFactory"/> </analyzer> </fieldType> 

    如果要提高包含所有查询词的文档的分数,则可以将pf参数与字段名的值一起传递。 在您的情况下,您应该传递pf=namepf表示短语字段)。 eDisMax查询解析器将尝试从q参数中的所有术语中进行词组查询,如果能够在任何词组字段中找到确切的词组,则它将指定的提升应用于该文档的匹配项。

    如果您默认情况下不使用eDisMax查询解析器,则可以通过传递q={!edismax pf=name}cafe 9暂时将其用于当前查询。

    您还可以传递pf2参数(如在pf2=name ),该参数的工作方式与pf相似,只是所生成的短语查询是查询中的双字母组 (即,每两个连续的术语将被视为增强短语)。 如果恰好是您要寻找的,还有一个pf3参数。

    您还可以自定义增强功能,并将多个字段名称传递给短语接近性参数(例如pf=name^2 title^3 )。

    暂无
    暂无

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

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