我怀疑即使在我努力的时候我也无法回答自己。
我认为这是一个理解问题。
因此...
我试图索引一个长文本字段(产品描述),它可能有重复的单词。让我们说我们正在谈论一种味道,我们说巧克力,然后继续说话,然后再说巧克力。
当solr正在索引时(据我理解solr控制面板中的分析选项卡),它将创建一个术语(它们是“指针”,每个术语 - >与uniqueKey属性相关联,识别我们拥有的每个令牌的“项目”。
solr索引是否会有两个术语指向同一个项目?
这是我的文本分析器:
<analyzer type="index">
<tokenizer class="solr.StandardTokenizerFactory"/>
<filter class="solr.GermanNormalizationFilterFactory"/>
<filter class="solr.StopFilterFactory" ignoreCase="true" words="lang/stopwords_de.txt" enablePositionIncrements="true" />
<filter class="solr.EnglishPossessiveFilterFactory"/>
<filter class="solr.EnglishMinimalStemFilterFactory"/>
<filter class="solr.StopFilterFactory" ignoreCase="true" words="lang/stopwords_en.txt" enablePositionIncrements="true" />
<filter class="solr.LowerCaseFilterFactory"/>
<filter class="solr.RemoveDuplicatesTokenFilterFactory"/>
</analyzer>
我虽然删除了重复条目,但是当我看一下分析时发现了这个:
据我解读solr,最后,在我的索引中,这三个术语指向那个“项目”:巧克力,blablabla和巧克力。是吗?
我希望问题很清楚:)
谢谢!
答案 0 :(得分:7)
您在分析之后看到的内容就在文本索引到Solr之前。当你实际索引它时,它只存储一个术语一次,并以(document_id,position)的形式保存该术语的所有出现。
希望下面的例子更清楚。
假设您要将以下三个文档添加到Solr:
T[0] = "dark chocolate is the best chocolate"
T[1] = "i love dark chocolate"
T[2] = "chocolate is delicious"
Solr将按以下方式存储在倒排索引中:
“best ”:{(T [0],position)}
“巧克力”:{(T [0],position1),(T [0],position2),(T [1],position),(T [2],position) }
“dark”:{(T [0],position),(T [1],position)}
“美味”:{(T [2],position)}
“i”:{(T [1],position)}
“是”:{(T [0],位置),(T [1],位置)}
“love”:{(T [0],position)}
“the”:{(T [0],position)}
注意: