2014-09-23 20 views
0

我有一个响应系统,我试图获得它,所以你可以输入一个字符串,并通过循环每个字符串并通过预定义的问题测量Levinshtein距离并使用一些其他算法。如何检测包含任意字符串的模式?

例如:如果您输入“嗨,你好吗?”它会搜索其数据库中相同或非常相似的内容(如“你好,你好吗?”)。但我希望它能够检测是否正在使用取决于环境的特定短语,如:

“给我10个饼干。”现在,我不想在数据库中添加所有可能数量的cookie。那是不可能的。因此,在数据库中,它会是这样的:

“给我[个]饼干。”我如何检测模式?请记住,我也将使用字符串模式作为其他响应。

回答

1

使用正则表达式解决此问题是不可能的。正则表达式代表regular grammar您需要一个context-sensitive grammar解析器用于此目的。

+0

嗯。任何Java示例?图书馆? :I – ColonelHedgehog 2014-09-23 19:08:05

+0

带有模糊查询的Lucene看起来不错,但我无法告诉你比你自己可以找到的一些研究更多。 – bidusurf 2014-09-25 03:25:00

2

Library? Apache Lucene Core及其FuzzQuery

+0

谢谢。那么,我如何能够将FuzzyQuery用作CSG解析器? – ColonelHedgehog 2014-09-23 19:43:09

+0

将[lucene-core](http://search.maven.org/#search|gav|1|g%3A%22org.apache.lucene%22%20AND%20a%3A%22lucene-core%22)添加为依赖于你的Maven POM。 – 2014-09-23 21:11:18

+0

我做到了,我只是指你如何寻找模式? – ColonelHedgehog 2014-09-23 21:53:04

相关问题