2016-03-08 69 views
1

我對Apache Solr做了一些分析,它很適合從各種來源搜索數據。 我面臨的問題是如何標準化我的搜索語法並將搜索文本轉換爲Solr查詢。半自然語言使用Apache Solr進行搜索

我有三種類型的文件/數據庫表進行搜索 - 即客戶,行業和單位。搜索框中的第一個關鍵字應該是三個中的任意一個。在此之後,用戶可以定義一個固定的一套標準:

Metrics : 0 or many (ex, exposure, income, revenue, loan_amt etc) 
Dimension : 0 or many (Geography, region, etc) 

例子:

customer - Returns all customer data from customer core 
customer income from Asia - Returns all customer income details who belongs to Asia 
customer income revenue from Asia - Returns all customer income and revenue details who belongs to Asia 

如何翻譯上面的自然語言搜索文本到Solr查詢? 我可以修復Solr中的文本語法,如 第一個關鍵字應該是客戶/行業/單位, 第二個關鍵值應該是一個或多個地區/地理位置 ,然後是度量值。

我不是在尋找谷歌喜歡搜索,但有限的搜索,用戶知道要搜索什麼。

回答

1

嚴格來說,這似乎並不是一個Solr問題。作爲第一步,您可能想要根據您的輸入的特定生產規則來定義context-free grammar(CFG,第2類文法)。這會給你一些可靠的語法規則。基於此,您可以爲自然語言輸入創建解析器,並將生成的解析樹映射到Solr中的關鍵字搜索。

+0

感謝martin。你能建議一個好的Java API /示例誰可以幫助定義上下文無關語法。 – user3222372

+0

也許這有助於:http://www.cs.columbia.edu/~zeph/software/JavaCFG/instructions.html –

1

爲了不被捲入被認爲是NLP最難區分的NLP的問答領域,可能試着定義你的問題的語法,例如用Y來表示Y,其中X可以是不同的實體像客戶一樣,Y可以是一些地理位置,Z是一個過濾器。