复制solr索引上的术语

时间:2013-05-15 15:52:15

标签: solr

我怀疑即使在我努力的时候我也无法回答自己。

我认为这是一个理解问题。

因此...

  • 我试图索引一个长文本字段(产品描述),它可能有重复的单词。让我们说我们正在谈论一种味道,我们说巧克力,然后继续说话,然后再说巧克力。

  • 当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>

我虽然删除了重复条目,但是当我看一下分析时发现了这个:

screenshot

据我解读solr,最后,在我的索引中,这三个术语指向那个“项目”:巧克力,blablabla和巧克力。是吗?

我希望问题很清楚:)

谢谢!

1 个答案:

答案 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)}

注意:

  • position将术语的起始偏移量和结束偏移量存储在文档中
  • 巧克力术语在索引中存储一次,但有两个对文档T [0]的引用