c# - 如何检查字符串是否包含数据库记录?
问题描述
我有一个字符串(一个长文件路径),需要检查该字符串是否包含数据库记录。我怎样才能做到这一点?
简化示例:
string filePath = @"C:\Users\me\folder1\foo\bar\documents\photos\img1.jpg";
我的数据库表是单列记录:
foo
bar
asdf
movies
videos
我想搜索filePath
它是否包含数据库中的任何记录(foo、bar 等),并返回这些记录。在我的示例中,filePath
contains foo
andbar
所以我将返回foo
and bar
。
我真的有成千上万的文件路径要搜索,我的数据库只有大约 100 条数据库记录,但会慢慢变大。
真的迷失了从哪里开始,或者这是否是最好的方法,但我想不出另一种方法来实现这一目标。谢谢!
解决方案
一种方法是拆分路径字符串,然后使用 WHERE IN 执行 SELECT 查询,例如
SELECT SomeColumns
FROM MyTable
WHERE ColumnName IN ('string1', 'string2' ...);
但我会采取的方法是在 Apache Lucene 之类的东西中索引所有路径,然后为数据库中的每个术语查询索引以查看它遇到的路径。这是对 Lucene 的一个非常简单的使用,您应该能够轻松地在线找到教程。
推荐阅读
- angular - Angular 中的组件是一种指令?
- database - 涉及大量磁盘 I/O 的大批量处理的并行方法
- html - 带有滚动和三角形的CSS Div,右侧箭头
- swift - 无法通过 id 找到约束
- docker - 如何在 Windows 2 下使用 Docker 在不同的 URL 下启动和访问不同的 Webserver?
- python - Python - 在异常中捕获异常?
- javascript - 使用静态获取未定义
- java - 表单未提交或对象未创建 - 无法弄清楚
- javascript - 如何在对象中访问外部 .this
- c# - 避免视觉未连接到 Point.ToScreen wpf 上的演示文稿源?