2009-06-18 106 views
0

我在Solr中創建了一個自定義Tokenizer,用於查找命名實體。我希望能夠使用這些信息來填充lucene/solr文檔中的單獨字段。Solr:從Tokenizer填充單獨的字段

作爲一個例子,我想填充一個名爲「locations」的多值字段,其中包含從文本中提取的所有位置名稱。要提取位置,首先將文本標記爲單詞,並確定哪些標記是位置。在這個過程之後,我想爲標記器發出標記,但也要填充從文本中提取的所有位置名稱的「位置」字段。

根據我所做的研究,無法從Tokenizer或TokenizerFactory訪問SolrDocument對象,因此無法從此處填充字段。

我到目前爲止提出的解決方案是創建一個自定義的UpdateRequestProcessorFactory來處理文本並提取字段,然後Tokenizer處理文本AGAIN以獲取令牌。我想找到一種方法來完成這項工作,並只處理一次文本。

回答

1

我這樣做是那麼優雅是什麼樣子你拍攝的方式:

我使用一個命名實體識別,並保存所有的實體在一個單獨的文件預處理文件。然後,當我發佈到Solr時,我只是從該文件中讀取實體並填充實體字段(對於人員,位置和組織而言是不同的)。這可以簡化,但由於我已經完成了其他工作的解析,重新使用已有的東西更容易。

0

下面是我認爲可以在lucene中工作的一個想法,但我不知道solr中是否有可能。您可以按照您的建議在典型的tokenstream鏈外標記字符串,然後使用NOT_ANALYZED選項手動將標記添加到文檔。您必須分別添加每個令牌,並使用document.add(...)lucene將其視爲單個字段進行搜索。