2017-04-03 57 views
0

假設我有100個在Lucene中索引的文檔。我想搜索「美國航空」這個詞。 Lucene運行搜索並返回10個包含術語「美國航空公司」的文件。我現在想要在我的用戶界面中瀏覽這10個文檔中的每一個,並自動突出顯示/滾動到每個匹配項。這些都是帶有唯一id-ed段落標籤的html文檔,所以我可以使用類似http://docurl#p_120的內容滾動到<p id="p_120">American Airlines is a big company.</p>。但是,我如何讓Lucene告訴我該術語的段落是什麼,以及它究竟在哪裏,以便我能夠突出它?Lucene能夠在文檔中找到匹配的位置嗎?

+0

見Lucene的[熒光筆API(http://lucene.apache.org/core/6_4_0/highlighter/org/apache/lucene/search/highlight/Highlighter.html)。 – femtoRgon

回答

0

你的問題是關於突出顯示。你問如何索引一個帶有子文檔的文本,這樣你就可以知道子文檔的ID以進行高亮顯示。

imho你有三種可能性。但首先讓我提醒你,lucene可以使用偏移量(=原始文本中的位置)突出顯示 https://lucene.apache.org/core/6_4_0/highlighter/org/apache/lucene/search/highlight/package-summary.html ,並且lucene知道子文檔的概念爲「被阻止的子文檔」或「嵌套文檔」或「嵌入的文檔」文檔」。

樹可能性:

  1. 使用有效載荷來存儲相應的子文檔的ID任期的每種情況。
  2. 存儲一個術語每次出現的偏移量,並知道一個新的子文檔在哪個偏移量開始。將ids與相應的偏移一起存儲在額外的字段中,並使用它來查找每個命中的id。
  3. 將文檔連同所有子文檔一起索引爲塊中的額外子文檔。搜索與http://lucene.apache.org/core/6_4_0/join/index.html?org/apache/lucene/search/join/ToParentBlockJoinCollector.html
相關問題