基于术语顺序和文本索引的相关性分数

时间:2014-10-28 13:43:14

标签: solr

我有这样的文件:

(1) 3825051 3835055 A 14 051
(2) 3833013 3834034 A 2 013
(3) 4537002 4637021 A 38 002
(4) 4537002 4537002M A 38 002
(5) 4537002 4537002M A 381 002

我的Solr查询是:q=+"a" AND +"38"

数据类型config:

<fieldType name="text_wildcard" class="solr.TextField">
    <analyzer type="index">
        <tokenizer class="solr.WhitespaceTokenizerFactory"/>
        <filter class="solr.LowerCaseFilterFactory"/>
        <filter class="solr.EdgeNGramFilterFactory" minGramSize="1" maxGramSize="25" side="front"/>
    </analyzer>
    <analyzer type="query">
        <tokenizer class="solr.WhitespaceTokenizerFactory"/>
        <filter class="solr.LowerCaseFilterFactory"/>
    </analyzer>
</fieldType>

我需要基于文本索引的文档以及术语“a”和“38”的顺序 - &gt; (3),(4),(5),(1),(2)现在结果如上所述。

有人有想法吗?

1 个答案:

答案 0 :(得分:0)

您需要进行一些实验,但是您可以在几个单独的字段中索引您的内容:当前字段,不使用EdgeNGramFilterFactory的一个字段,以及可能使用更长和更长minGramSize的EdgeNGramFilterFactory的更多字段。然后,查询所有字段并可能尝试使用增强(例如,field1NoEdgeNGram ^ 5 field2EdgeNGram2 ^ 4 field3EdgeNGram3 ^ 3等)。我认为效果将是您正在寻找的 - 为与数据中最长前缀相对应的匹配提供更高的排名。