LINQ是否有任何支持搜索机器搜索的内置搜索?

时间:2009-12-08 10:39:14

标签: c# linq search

如果我有List<string>并希望通过它进行标准搜索,我可以使用这样的LINQ语句:

(from t in tasks
 where searchTerms.All(term => t.ToUpper().Contains(term.ToUpper()))
 select t).ToList();

但是,如果我想支持标准的类似搜索引擎的语法来处理短语,例如:

contract
contract customer
jim customer
"Jim Smith" customer

然后我需要开始推出自己的自定义搜索方法。另外,作为Jon Skeet mentioned here,您必须小心使用不同的文化设置与ToUpper()进行比较,如果您在网络环境中,则编码存在许多问题和搜索编码字符问题等。

是否没有.NET或LINQ解决方案可以处理类似搜索机器的搜索,例如而不是Contains()类似于ConstainsSearchTerms()?

2 个答案:

答案 0 :(得分:0)

如果您使用的是LINQ2SQL,则可以使用SqlMethods.Like方法生成类似SQL中使用的LIKE。

在LINQ2Objects上,只需使用正则表达式。

关于ToUpper。这是有问题的,更好的解决方案是使用字符串大小写折叠,但遗憾的是.NET只支持简单模型:(

答案 1 :(得分:0)

这不是LINQ,但你可能想看看Lucene.NET。它实际上是一个搜索引擎,也是一个非常好的搜索引擎。