我有这样的文件:
(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)现在结果如上所述。
有人有想法吗?
答案 0 :(得分:0)
您需要进行一些实验,但是您可以在几个单独的字段中索引您的内容:当前字段,不使用EdgeNGramFilterFactory的一个字段,以及可能使用更长和更长minGramSize的EdgeNGramFilterFactory的更多字段。然后,查询所有字段并可能尝试使用增强(例如,field1NoEdgeNGram ^ 5 field2EdgeNGram2 ^ 4 field3EdgeNGram3 ^ 3等)。我认为效果将是您正在寻找的 - 为与数据中最长前缀相对应的匹配提供更高的排名。