Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/297.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 分析用户提交的搜索查询_C#_Linq_Search - Fatal编程技术网

C# 分析用户提交的搜索查询

C# 分析用户提交的搜索查询,c#,linq,search,C#,Linq,Search,在我的web应用程序中,我希望允许我的用户搜索特定的文章 我需要支持以下运营商: AND OR NOT ( ) " " 搜索查询可能类似于: aaa AND bbb AND (ccc or ddd) NOT "eee fff" 如果可能,使用*和之类的通配符?也应该得到支持 如果可能的话,我希望最终得到一个Linq表达式,它将允许我查询EF、ElasticLINQ或Linq2SQL 你知道有什么项目可以让我以一种简单的方式完成吗 我一直在研究反讽和Antlr,但它们似乎在这方面做得过火了 有

在我的web应用程序中,我希望允许我的用户搜索特定的文章

我需要支持以下运营商:

AND
OR
NOT
( )
" "
搜索查询可能类似于:

aaa AND bbb AND (ccc or ddd) NOT "eee fff"
如果可能,使用*和之类的通配符?也应该得到支持

如果可能的话,我希望最终得到一个Linq表达式,它将允许我查询EF、ElasticLINQ或Linq2SQL

你知道有什么项目可以让我以一种简单的方式完成吗

我一直在研究反讽和Antlr,但它们似乎在这方面做得过火了

有什么想法吗

编辑:
如果你对我如何自己编程有任何建议,我也非常感兴趣。但是肯定有人以前就有过这种情况。

我最近自己也实现了一个类似的解析器,这是一项相当艰巨的任务。我必须定义语法,实现词汇和句法分析,以及表达式评估逻辑。这是:

我在这里不提供太多细节,因为,IMHO,这不是最好的方法,除非您有编写此类代码的经验

同时,我从来没有听说过任何工具能够自动进行这种语法和词汇分析,并且易于使用

我知道有,但是这些都是C++的,它们很复杂。从来没有发现任何有趣的C

<> P>因此,我建议你再考虑一下,你是否真的需要这样做。< /P> UPD:我发现了一个很好的SO问题,如果您尝试实现自己的解析器,它可能会对您有用:

解决方案:

使用您自己的DSL看看@

调用ODataWeb服务/wcf数据服务以使用标准化查询 参见示例@


您可以使用Microsoft Dynamics CRM在其高级查找中处理此问题的方式来处理此问题:用户没有手动输入自己的搜索字符串,而是使用一个图形用户界面,在您搜索字符串时将其转换为正确的字符串

我看到您是为熟悉语法的人制作的。即使此人知道查询是如何工作的,我仍然会选择这种方法:

从可视化表示中确定查询的工作方式要比从文本中确定查询的工作方式容易得多。 即使您有语法方面的经验,也更容易使用它。 语法错误更难产生,因为语法是自动生成的。
用户是否必须写入和,或。。。?他们是程序员吗?你不是有点过度设计吗?你意识到你还需要做一些语法检查和或没有看到任何简单的解决方案。如果你真的需要这样的搜索功能,试着让它不需要用户写任何东西,特别是如果他不是程序员,让他点击、选择、拖动、拖放,但不要写搜索查询。谢谢你的评论。输入查询的人是网站管理员,并且熟悉语法。我同意这几乎肯定是过度工程化了。这样做的目的是使用高级查找不支持的语法查找文章,还是您试图让非CRM用户访问这些文章?