C# 以编程方式将X w/5(Y | | Z)扩展为;X Y“~5 | |”号;X Z“~5.

C# 以编程方式将X w/5(Y | | Z)扩展为;X Y“~5 | |”号;X Z“~5.,c#,regex,lucene,boolean,lucene.net,C#,Regex,Lucene,Boolean,Lucene.net,我需要能够通过编程扩展用户的搜索表达式,例如: X w/5(Y | | Z) 到 “xy”~5 | |“xz”~5 我是否可以利用现有的库来做这类事情?如果没有,建议采用什么方法?此解决方案将存在于.NET环境中。您需要的是一个解析器,它将创建一个抽象语法树,然后您可以对其进行操作。看一看。你会想看一看共轭范式和析取范式formhttp://en.wikipedia.org/wiki/Disjunctive_normal_form. 有一种算法可以实现,还有一个指向java实现的链接。您能解

我需要能够通过编程扩展用户的搜索表达式,例如: X w/5(Y | | Z) 到 “xy”~5 | |“xz”~5

我是否可以利用现有的库来做这类事情?如果没有,建议采用什么方法?此解决方案将存在于.NET环境中。

您需要的是一个解析器,它将创建一个抽象语法树,然后您可以对其进行操作。看一看。

你会想看一看共轭范式和析取范式formhttp://en.wikipedia.org/wiki/Disjunctive_normal_form.


有一种算法可以实现,还有一个指向java实现的链接。

您能解释一下为什么要这样做吗?也许有其他方法可以实现您的最终目标。我已经更正了我的帖子,以更好地反映其根本目的:将邻近查询传递给Lucene。解析器本身不会重写表达式。他需要的是一个解析器加上一个自定义表达式重写例程。