2016-03-08 97 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是一个过滤器。