我需要根据搜索查询的位置对SOLR的搜索结果进行排序,例如我有4个文档。
1.solr lucene的演示
2.lucene主要专注于文本索引。
3.举例说明lucene
4.lucene是一个开源的
当我将查询文本搜索 琉璃 那么我需要的结果是按照以下顺序
2.lucene主要专注于文本索引。
4.lucene是一个开源的
3.举例说明lucene
1.solr lucene的演示
即提升搜索查询在第一和第二位的位置,高于其他
以下是我使用的字段定义,我需要基于位置的排序。
*<fieldType name="text_general" class="solr.TextField" positionIncrementGap="100" multiValued="true">
<analyzer type="index">
<charFilter class="solr.MappingCharFilterFactory" mapping="mapping-ISOLatin1Accent.txt"/>
<tokenizer class="solr.WhitespaceTokenizerFactory"/>
<filter class="solr.StopFilterFactory" words="stopwords.txt" ignoreCase="true"/>
<filter class="solr.WordDelimiterGraphFilterFactory" catenateNumbers="1" generateNumberParts="1" protected="protwords.txt" splitOnCaseChange="1" generateWordParts="0" preserveOriginal="1" catenateAll="0" catenateWords="1"/>
<filter class="solr.LowerCaseFilterFactory"/>
</analyzer>
<analyzer type="query">
<charFilter class="solr.MappingCharFilterFactory" mapping="mapping-ISOLatin1Accent.txt"/>
<tokenizer class="solr.WhitespaceTokenizerFactory"/>
<filter class="solr.SynonymFilterFactory" expand="true" ignoreCase="true" synonyms="synonyms.txt"/>
<filter class="solr.StopFilterFactory" words="stopwords.txt" ignoreCase="true"/>
<filter class="solr.WordDelimiterGraphFilterFactory" catenateNumbers="1" generateNumberParts="1" protected="protwords.txt" splitOnCaseChange="1" generateWordParts="0" preserveOriginal="1" catenateAll="0" catenateWords="1"/>
<filter class="solr.LowerCaseFilterFactory"/>
</analyzer>
<similarity class="CustomSimilarity" />
</fieldType>*
为此,我试图通过在solr中添加自定义相似性类来禁用terfrequency,但我得到的错误信息为
schema.xml] fieldType的插件启动失败。错误加载类
以下是CustomSimilarity classs的类定义
import org.apache.lucene.analysis.payloads.PayloadHelper;
import org.apache.lucene.search.similarities.DefaultSimilarity;
import org.apache.lucene.search.similarities.Similarity;
import org.apache.lucene.util.BytesRef;
import org.apache.solr.common.params.SolrParams;
import org.apache.solr.schema.SimilarityFactory;
import org.apache.solr.search.similarities.SchemaSimilarityFactory;
public class CustomSimilarity extends SchemaSimilarityFactory{
public float tf(float freq) {
return 1.0f;
}
}
以及solrconfig中的jar文件路径。
<lib dir="${solr.install.dir:../../../..}/dist/" regex=".*.jar" />
任何帮助将是感激的
有两点。
1)你忘了写@Override,这样你对tf的定义就会被接收。
2)在指定jar路径时,regex必须是".*.jar"
import org.apache.lucene.analysis.payloads.PayloadHelper;
import org.apache.lucene.search.similarities.DefaultSimilarity;
import org.apache.lucene.search.similarities.Similarity;
import org.apache.lucene.util.BytesRef;
import org.apache.solr.common.params.SolrParams;
import org.apache.solr.schema.SimilarityFactory;
import org.apache.solr.search.similarities.SchemaSimilarityFactory;
public class CustomSimilarity extends SchemaSimilarityFactory{
@Override
public float tf(float freq) {
return 1.0f;
}
}
Regex:
<lib dir="${solr.install.dir:../../../..}/dist/" regex=".*\.jar" />