2017-10-04 147 views
0

我在嘗試使用MoreLikeThis Solr的功能來查找基於其他文檔的類似文檔,但我不太瞭解這些功能的一些功能是如何工作的。Solr中的術語向量

正如它說的here,MoreLikeThis組件效果最好,當存儲termVectors時。我的困惑來了。

在Solr的schema.xml文件的字段(假設該字段包含電影評論文本)上啓用標誌termVectors就足夠了嗎?插入它後,Solr會計算給定字段的termVectors,然後在隨後調用MoreLikeThis處理函數時存儲它,然後使用calculcated termVectors?

回答

1

簡短答案是否定的,您需要在此類架構更改後重新編制索引。 啓用了術語矢量,將加速從原始輸入文檔中查找有趣術語的過程(如果此文檔位於索引中)。 第二階段計時(當更多人喜歡此查詢發生時)將保持不變。 有關MLT如何工作的更多信息[1]。

一般來說,將這些更改應用於模式時,需要重新索引文檔以使Solr構建相關數據結構(術語向量是每個文檔的迷你索引,並且需要存儲特定文件磁盤[2] NB這樣會增加你的磁盤利用率)

[1] https://www.slideshare.net/AlessandroBenedetti/advanced-document-similarity-with-apache-lucene

[2] https://lucene.apache.org/core/6_6_0/core/org/apache/lucene/codecs/lucene50/Lucene50TermVectorsFormat.html

+0

我居然沒有一個模式呢,況且我有一個索引集文件。我的Solr核心現在是空白的,我剛剛開始。所以,如果我理解的很好 - Solr會在編制索引時爲每個文檔自動構建術語向量,對吧? – wookie

+1

事實上,在模式中配置它之後,Solr會在建立索引時謹慎並構建數據結構。 MLT將自動使用這些結構(在內部,MLT代碼對索引文件進行檢查,並且如果它發現它正在評估的字段的矢量術語,它將自動使用它們) –

+0

很好,這是一個好消息。實際上我還有一個問題,因爲我看到你對這個主題有很好的理解。 在執行MLT時,我希望它只考慮索引文檔的有限子集,例如:我有一個150 000文檔的索引,模式由id,title,content和publicationDate組成。 現在,我想對任意輸入文檔執行MLT查詢,但是我希望查詢僅在02-01-2014和02-04-2014之間考慮使用publicationDate的文檔。 似乎'mlt.qf'是它的解決方案,對嗎? – wookie