Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/sorting/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sorting 按字段值和最新日期内的Solr boost查询_Sorting_Solr_Lucene_Relevance_Solr Boost - Fatal编程技术网

Sorting 按字段值和最新日期内的Solr boost查询

Sorting 按字段值和最新日期内的Solr boost查询,sorting,solr,lucene,relevance,solr-boost,Sorting,Solr,Lucene,Relevance,Solr Boost,我们在schema.xml中有以下设置: <field name="last_modified" type="date" indexed="true" stored="true" multiValued="false" omitTermFreqAndPositions="true"/> ... <field name="prefix" type="string" indexed="true" stored="true" omitTermFreqAndPositions="tr

我们在schema.xml中有以下设置:

<field name="last_modified" type="date" indexed="true" stored="true" multiValued="false" omitTermFreqAndPositions="true"/>
...

<field name="prefix" type="string" indexed="true" stored="true" omitTermFreqAndPositions="true"/>
结果: 上述查询无法按预期工作

我们认为忽略TermFrequeandPositions=true将强制阻止ITF,得分应该有效。但事实似乎并非如此!
请帮助我们:-)

因此我们找到了解决方案

  • 创建自己的相似性(一个简单的java类) 有关如何更好更简单的描述,请阅读
  • 我们上的课

    package com.luxactive;
    import org.apache.lucene.index.FieldInvertState;
    import org.apache.lucene.search.similarities.DefaultSimilarity;
    
    public class MyNewSimilarityClass  extends DefaultSimilarity {
    
    @Override
    public float coord(int overlap, int maxOverlap) {
        return 1.0f;
    }
    
    @Override
    public float idf(long docFreq, long numDocs) {
        return 1.0f;
    }
    
    @Override
    public float lengthNorm(FieldInvertState arg0) {
        return 1.0f;
    }
    
    @Override
    public float tf(float freq) {
        return 1.0f;
    }
    
    }
    
  • 创建一个与你相似的简单罐子
  • 将jar复制到solr服务器的任何文件夹中,我们使用:
    SOLRFOLDER/solr-4.8.0/example/solr/dih
  • 接下来的步骤需要做每一个收集你有

  • 在以下位置编辑solrconfig.xml:
    SOLRFOLDER/solr-4.8.0/example/solr/collection/conf/solrconfig.xml

    添加
    以导入自定义jar
  • 在同一文件夹中编辑schema.xml
  • 添加以下内容

    <!-- DEFAULT Factory for custom com.luxactive.MyNewSimilarityClass  -->
    <similarity class="solr.SchemaSimilarityFactory"/>
    
    <!-- TYPE String -->
     <fieldType name="no_term_frequency_string" class="solr.StrField" sortMissingLast="true" >
        <similarity class="com.luxactive.MyNewSimilarityClass"/>
    </fieldType>
    
    <!-- TYPE Date -->
    <fieldType name="no_term_frequency_date" class="solr.TrieDateField" sortMissingLast="true" >
        <similarity class="com.luxactive.MyNewSimilarityClass"/>
    </fieldType>
    
    <!-- TYPE Int-->
    <fieldType name="no_term_frequency_int" class="solr.TrieIntField" sortMissingLast="true" >
        <similarity class="com.luxactive.MyNewSimilarityClass"/>
    </fieldType>
    
    
    
    在这里,您可以定义自己的字段类型(int、string和date),它们使用新的相似性类,该类将返回一个类似于MyNewSimilarityClass中定义的提升值

  • 现在,通过将YR类型设置为您创建的类型,编辑要使用自定义相似性的字段。
    发件人:

    收件人:
  • 重新启动solr服务器并享受您的提升:)
  • <!-- DEFAULT Factory for custom com.luxactive.MyNewSimilarityClass  -->
    <similarity class="solr.SchemaSimilarityFactory"/>
    
    <!-- TYPE String -->
     <fieldType name="no_term_frequency_string" class="solr.StrField" sortMissingLast="true" >
        <similarity class="com.luxactive.MyNewSimilarityClass"/>
    </fieldType>
    
    <!-- TYPE Date -->
    <fieldType name="no_term_frequency_date" class="solr.TrieDateField" sortMissingLast="true" >
        <similarity class="com.luxactive.MyNewSimilarityClass"/>
    </fieldType>
    
    <!-- TYPE Int-->
    <fieldType name="no_term_frequency_int" class="solr.TrieIntField" sortMissingLast="true" >
        <similarity class="com.luxactive.MyNewSimilarityClass"/>
    </fieldType>