问题标签 [text-search]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
4 回答
4624 浏览

php - 使用 PHP 在文件中搜索文本

如何使用 PHP 在 PDF、doc、docs 或 txt 等文件中搜索文本?我想在 MySQL 中执行与全文搜索类似的功能,但这次,我直接搜索文件,而不是数据库。

搜索将在位于文件夹中的许多文件中进行搜索。对此问题有任何建议、提示或解决方案吗?

我还注意到,谷歌也会搜索文件。

0 投票
1 回答
545 浏览

google-app-engine - 应用引擎 - 简单的文本搜索

我希望为 App Engine 实现一个简单但有效的文本搜索,直到应用引擎的官方文本搜索功能发布之前我都可以使用它。我看到那里有图书馆,但安装新东西总是很麻烦。我想知道这是否是一个有效的策略:

1) 将需要文本搜索的每个属性分解为一组文本片段 (列表) 2) 添加这些列表保存记录 3) 搜索时,只需在列表属性上使用相等过滤器

例如,如果我有记录:

我可以保存这样的属性:

然后进行搜索,我可以这样做并期望它返回上述记录:

这是文本搜索的实现方式吗?你如何防止索引失控,特别是如果你有一个段落或什么的?是否有其他一些通常使用的压缩策略?我想如果我只是想要一些简单的东西,这可能会奏效,但很高兴知道我可能遇到的问题。

更新:::

好的,所以事实证明这个概念可能是合法的。这篇博文也引用了它:http: //googleappengine.blogspot.com/2010/04/making-your-app-searchable-using-self.html

注意:上面博文中的源代码不适用于当前版本的 Lucene。我安装了旧版本(2.9.3)作为快速修复,因为谷歌应该很快就会推出他们自己的应用引擎文本搜索。

下面的响应中建议的解决方案是一个很好的快速修复,但由于大表的限制,仅当您查询一个字段时才有效,因为您只能在查询中的一个属性上使用不等式运算符:

如果要查询多个属性,可以为每个属性保存索引。就我而言,我将它用于小文本字段的一些自动建议功能,而不是实际搜索文档中的单词和短语匹配(您可以使用上面的博客文章实现)。事实证明这很简单,我真的不需要图书馆。另外,我预计如果有人在搜索“Larry”,他们会从输入“La...”开始,而不是从单词中间开始:“arry”。所以如果属性是一个人的名字或类似的东西,索引只有以第一个字母开头的子字符串,所以“Larry”的索引只是{“l”,“la”,“lar”,“larr ", "拉里"}

我对电话号码等数据做了一些不同的事情,您可能希望从开头或中间数字开始搜索一个。在这种情况下,我只是存储了以长度为 3 的字符串开头的整个子字符串集,因此电话号码“123-456-7890”将是:{“123”、“234”、“345”、...。 . "123456789", "234567890", "1234567890"}, 一共 (10*((10+1)/2))-(10+9) = 41 个索引...其实我做的多一点复杂的,以便删除一些不太可能使用的子字符串,但你明白了。

那么您的查询将是:(伪代码)SELECT * from Person WHERE firstNameSearchIndex == "lar" phonenumberSearchIndex == "1234"

应用引擎的工作方式是,如果查询子字符串与属性中的任何子字符串匹配,则将其计为匹配。

0 投票
2 回答
2175 浏览

php - 搜索文本文件并显示结果?

如果从用户那里得到输入,我想在文件中搜索任何结果,并显示结果:

我没有得到我必须做的事情,我只想用相关的 $searchvalues 显示文本文件中的行

0 投票
1 回答
478 浏览

java - 查找包含另一个字符串的字符串部分,可能有中间词

对于本学期的最后一个项目,目标是在 Song 对象内的歌词字符串上运行特定短语的搜索,然后根据子字符串匹配的长度对结果进行排名。歌词是从文件中读取的,并与该文件中的换行符匹配。

例如,搜索“她爱你”将在示例匹配中返回这些:

披头士乐队:“......她爱你,是的,是的,是的......” Rank= 13 个字符
Bonnie Raitt:“......只是爱你......” Rank= 18 个字符
Elvis Presley:“......你在问她是否爱我\r\n嗯,不知道……” Rank= 23 characters

从上一个示例中可以看出,匹配项可以跨越多行。

我有 a 中的所有歌曲TreeMap<String, TreeSet<Song>>,所以我得到了与查询中的第一个单词匹配的所有歌曲。我遇到的困难是在字符串中搜索匹配项,因为正则表达式在这种情况下不起作用。

构造 Song 对象时,我将歌词转储到 Set 中以运行单个单词的搜索,为此我曾经String.split("[^a-zA-Z}")分离出单个单词并清除标点符号。所以我想在那个数组上运行我的搜索。我正在使用的过程如下:

迭代完成后,会创建一个 Rank 对象来保存匹配的数组部分的歌曲、搜索短语、起点和终点。在 Rank 对象中是一种计算字符数并补偿空格来计算排名的方法。然后将其插入到 PriorityQueue 中,将从原始 matchSet 中提取前十个匹配项。

问题是这并不能防止误报,并且匹配排名可能会出现偏差。例如,Aerosmith 的 Beyond Beautiful 包含“……她爱我,她不爱你……”在我的过程中,我将匹配“……她爱我,她不爱……”,所以不是排名13,我将获得27的排名。

我需要进行哪些更改才能清除误报和不正确的排名?

0 投票
3 回答
814 浏览

graph - 为图形/分子比较算法调整文本搜索

我正在寻找一个用于非传统文本搜索的文本搜索引擎,并且我想要关于哪种工具(Lucene、Sphinx、Xapian 或其他工具)最适合我的建议,以及从哪里开始的指针。

我将分子表示为图表(原子和键)。我有一种方法可以枚举所有大小为 k 的子图。作为技术,输入是SMILES,输出是规范 SMARTS 以及每个子图/SMARTS 出现的次数。

例如,如果输入分子是“ CCO ”,那么典型结果是 {“C”:2,“O”:1,“CC”:1,“OC”:1,“CCO”:1},如果分子是“ SCO ”,那么典型结果是{“C”:1,“S”:1,“O”:1,“CS”:1,“OC”:1,“SCO”:1}。这些都是很小的例子。对于真正的分子,我得到了大约 500 个“单词”,看起来像“CC(C)O”、“CCCOCC”、“cn”和“cccc(c)O”。

将分子视为特征字符串和计数的集合意味着我应该能够使用文本搜索工具在文本级别进行比较,希望它们在化学级别上有意义。

例如,我可以使用余弦相似度也许与tf-idf权重并通过寻找相似的子模式来找到相似的分子。对于上面的“CCO”和“SCO”示例,余弦相似度为 (2*1+1*1+1*1)/sqrt(2*2+1*1+1*1+1*1+1* 1)/sqrt(6*(1*1)) = 4/sqrt(8*6) = 0.58。

再举一个例子,如果我想找到包含“CCS”子结构的分子,那么我可以根据计数进行快速倒排索引搜索(分子必须至少有 2 个“C”,至少 1 个“CS”,等等)在解决 NP 子图同构问题之前。也就是说,基于文本的方法可以作为过滤器来拒绝明显的不匹配。

我试图找出存在的文本解决方案,但这有点令人生畏。我不需要停用词,我不需要词干,我不关心词序;我不需要很多现有的功能。我确实需要保留词向量的能力,因为知道“C”出现 2 次还是 3 次很重要。

哪个文本搜索引擎最适合我?它看起来像 Lucene,尤其是在 Mahout 中的工作。您能否推荐查看文档的哪些部分或相关教程?我发现的那些是用于全文搜索的,具有词干和其他我不需要的功能。

0 投票
2 回答
4827 浏览

c# - 在 C# 中快速动态模糊搜索超过 10 万个字符串

假设它们是预先加载的股票代码,输入到文本框中。我正在寻找可以复制的代码,而不是要安装的库。

这是受到这个问题的启发:

是否有任何为 C# 编写的模糊搜索或字符串相似函数库?

Levenstein 距离算法似乎运行良好,但计算需要时间。当用户输入额外的字母时,查询需要重新运行这一事实是否有任何优化?我有兴趣最多显示每个输入的前 10 个匹配项。

0 投票
3 回答
2172 浏览

c++ - 有一个字符串映射如何将它与给定的字符串进行比较

我们有像 name:location 这样的字符串对的映射(unix 像绝对位置 a la myfolder/)。我们得到了一些位置 a la myfolder/mysubfolder/myfile。如何找到最适合给定网址的地图位置?

示例我们有一个类似的地图:

我们被赋予了价值myfolder/mysubfolder/myfile/blablabla/(字符串)。我们想找出它与地图中的哪个项目最相关。搜索结果应service4为相关内容最多的地图项。

那么如何通过给定的字符串值找到与它最相关的地图元素呢?

请提供一些代码,因为我是 C++ nube 并且不知道如何实现这样的事情?

所以我稍微简化了一个问题 -现在我需要的所有关系都是给定路径的深度,在字符串的情况下,可以通过迭代所有地图路径来查看 thare langth,搜索给定路径中的外观并记住最长的地图在给定路径中找到的项目路径。

0 投票
1 回答
225 浏览

html - 在 HTML 文件的内容中搜索特定的单词

我正在为 iPad 开发一个应用程序,它可以加载 HTML 文件,从而以有趣和可爱的方式显示我的内容。现在开始我的噩梦,我尝试在这些文件中搜索随机单词,但不知道如何。我正在考虑使用某种 Objective-C 函数,它允许我将每个 HTML 文件的内容加载到类似字符串的变量中,然后使用变量的方法执行这些单词的搜索(例如在 Java 或 C# 中执行相同的操作) )。

也许这是一项简单的任务,但我坚持下去,希望能得到一些帮助——比如提示、方法和函数、类似于我正在尝试做的代码片段,甚至是解决这个问题的其他一些可能性我没有还没想。

0 投票
1 回答
151 浏览

java - 如何从“搜索查询”中提取键?

我需要提取搜索查询的关键字。例如,假设搜索“最新流行的诺基亚手机”。我想提取这个词组的关键词。是否有任何用 Java 编写的库来完成这项工作?

0 投票
2 回答
2898 浏览

postgresql - 如何使子字符串匹配查询在大表上快速工作?

我有一个带有文本字段的大表,并希望使用 ILIKE 对该表进行查询,以查找包含给定子字符串的记录。它在小桌子上完美运行,但在我的情况下,这是一个相当耗时的操作,我需要它快速运行,因为我在我网站的实时搜索字段中使用它。任何想法,将不胜感激...