如何强制完全匹配以获得最高优先级?

时间:2012-09-27 16:45:52

标签: solr lucene solr-query-syntax solr-schema

我正在编制索引并搜索5个字段,这些字段以各种方式进行标记化/过滤 但是,我想在搜索时,如果我输入的查询与字段1中的值匹配,那么这将是我得到的最佳结果。
我该如何定义:

  1. 字段
  2. 以这种方式查询此字段获得优先权,如果有100%匹配
  3. 在我的架构中,我有字段

    <field name="na_title" type="text_names" indexed="true" stored="false" required="true" />
    

    text_names是:<fieldType name="text_names" class="solr.StrField" />

    我有只有一个条目,其中na_title =“somthing正在进行中”。但是,当我搜索时 text_names:somthing is going on here我得到了很多结果 只是指出它,该字段上没有分析器和过滤器,无论是查询还是索引操作。

2 个答案:

答案 0 :(得分:1)

来自manual

  

Lucene允许通过“提升”来影响搜索结果   一个级别:

     
      
  • 文档级别提升 - 在索引时 - 通过调用   将文档添加到索引之前的document.setBoost()。
  •   
  • 文档的字段级别提升 - 在索引时 - 通过调用   field.setBoost()在向文档添加字段之前(以及之前)   将文档添加到索引中)。
  •   
  • 查询级别提升 - 期间   搜索,通过设置查询子句的提升,调用   Query.setBoost()。
  •   

答案 1 :(得分:1)

您需要将字段索引两次 - 一次分析,一次不分析。然后,您可以增加非分析字段中的匹配项。

快捷方式可以是将所有这些字段索引为字符串,并使用copyfield将它们作为文本复制到catch-all字段中。这样可以简化查询并减少重复字段的数量。