我正在使用大量数据进行字符串匹配。

编辑:我正在匹配一个大列表中的单词与一些本体文本文件。我从本体中获取每个文件,并搜索每个文件行的第三个字符串与列表中的任何单词之间的匹配。

我在监督这样一个事实上犯了一个错误:我需要做的不是纯匹配(结果很差),但是我需要一些更宽松的匹配函数,当字符串包含在另一个字符串中时,它也会返回结果。

我用Radix Trie做到了这一点;它非常快,效果很好,但现在我猜我的工作没用,因为trie只返回完全匹配。 :/

执行此操作的算法类型是字符串搜索算法?

有人可以建议一些他有经验的Java实现吗?

算法应该很快,但不是最重要的,会与速度和复杂性相提并论。

我非常感谢所有建议/示例/解释/链接!

谢谢!

什么是"执行此操作的算法类型是字符串搜索算法?"问?

您可能会发现后缀树很有用(它们在概念上类似于Tries)。

每个字符串,前缀为^并以$结尾,并创建所有附加字符串的后缀树。空间使用将是O(n),并且可能比你对trie的更糟糕。

如果你现在需要搜索字符串s,你可以很容易地在O(| s |)时间内完成,就像一个trie,你得到的匹配将是一个子字符串匹配(基本上,你将匹配某些字符串的一些后缀) )。

抱歉,我没有对Java实现的引用。 strike>

找到了一个有用的stackoverflow答案:Generalized Suffix Tree Java Implementation

其中有:

http://illya-keeplearning.blogspot.com/2009/04/suffix-trees-java-ukkonens-algorithm.html

反过来又有:源代码:http://illya.yolasite.com/resources/suffix-tree.zip

@Moron:我认为这可能正是我需要的,如果我理解的话,我可以用同一棵树做"匹配"和"包含"????

@Julia:是的。如果您想要完全匹配,请在搜索字符串前加上^并附加$并进行匹配。如果要包含,请按原样使用搜索字符串。

@Moron:似乎这将是完美的。一定有一些java lib !!

@Julia:查看我在这个答案中添加的链接。

@Moron:非常感谢!

您可以使用BM算法在单个模式的文本文件中进行搜索,并对列表中的所有模式重复此算法。

另一个最佳解决方案是使用多模式搜索算法,如:Aho-Corasick字符串匹配算法

johannburkard.de/software/stringsearch?你说在文本文件中搜索,但我不需要在文本文件中的任何地方进行匹配,但是每行的每三个字符串都可以指定吗? (对不起详细信息,我很害怕像我用radix trie那样匆匆忙忙)

BM算法匹配任何字符串而不关心字符串的来源(来自文件中的文本,来自db中的单元格等)。

正则表达式绝对是您最好的选择。它们写起来可能有点混乱,但它们是你可以在没有难以理解的if / else或switch语句系列的情况下进行更松散匹配的唯一方法。

另外,它们比替代品快得多。

我修改了我的解释,我没有解释清楚抱歉!

-1:为什么正则表达式"最好"?为什么替换if / else切换语句?在声称替代品之前,您还考虑了哪些其他替代方案?我会说正则表达式的表现会非常糟糕!你必须编译它们,然后在匹配期间可能回溯......

好吧,这个问题最初的措辞(编辑前),这就是我读它的方式 - 显然,它不再适用!

为什么不在java中使用indexOf方法。根据内存的可用性,阅读内容。做一个indexOf并获得你需要的所有行。加载下一组内容。

如果从文件中读取使用nio流。

可能是想法不好,但我相信java。它将使用最好的算法。

如果你使用正则表达式会更好。

我不完全确定我是否正确理解了这个问题,但这听起来像正则表达式会起作用

http://java.sun.com/developer/technicalArticles/releases/1.4regex/

我修改了我的解释,我没有解释清楚抱歉!

java中字符串的算法_Java中的字符串搜索算法相关推荐

  1. Java中string字符串的值_Java中的字符串(String)

    一.基本概念: 字符串是一系列字符串的序列.在Java语言中字符串是用一对对双引号"",括起来的字符系列.例如"Hello","你好".从数 ...

  2. Java字符串的重要性_java中的字符串相关知识整理

    字符串就是一系列的字符组合的串,如果写过C/C++的应该就了解,在字符串的操作上会有许多操作的函数与类,用于简化代码的开发.一方面是因为字符串在代码中会频繁用到,另一方面是因为字符串的操作非常麻烦. ...

  3. java 字符串原样输出_Java 中如何原样输出转义符号

    标签: Java 中的转义字符有好几种,常见的有: 八进制转义字符,格式:\ + 1到3位八进制数字,如\1, \20,范围为 \0 ~ \377,即最大值为255. Unicode转义字符,格式:\ ...

  4. java字符串的拆分_Java中的字符串分割 .

    java中的split函数和js中的split函数不一样. Java中的我们可以利用split把字符串按照指定的分割符进行分割,然后返回字符串数组,下面是string.split的用法实例及注意事项: ...

  5. java截取字符串的一部分_java中如何截取字符串中的指定一部分

    展开全部 java用substring函数截取string中一段字符串 在String中有两个substring()函数,如下: 一:String.substring(int start) 参数: s ...

  6. java中对字符串进行解析_Java中字符串解析

    1.字符串不属于基本数据类型(基本数据类型有[byte,int,char,float,double,boolean,short,long]),字符串由单个或多个字符组成,本质上是字符数组,Java中提 ...

  7. java键盘输入字符串静态变量_Java 中为什么样在静态方法中可以调用的方法、可以使用的成员变量必须是静态的?老师说字符串常量和静态变量放在data segment中...

    在上一篇文章中,小编为您详细介绍了关于<C字符串以'\0'结尾的问题?为什么样C语言字符串常量可以当做指针>相关知识.本篇中小编将再为您讲解标题Java 中为什么样在静态方法中可以调用的方 ...

  8. java中的string类型_Java中的字符串类型(String)

    String 字符串是一个引用数据类型,字符串都是对象. String特性:1.在程序中出现的字符串字面量(常量),在程序中运行时会以对象的形式保存在JVM内存的字符串池中,并且所有的这些字符串字面量 ...

  9. java拆分电话号码的函数_java中split拆分字符串函数用法

    package com.java.lang; public class StringSp { /** * @param args */ public static void main(String[] ...

最新文章

  1. 网络推广方案中解析SEO优化文章的标题设置技巧
  2. 密码学赛后技术总结 小片段啦
  3. 【深入理解JVM】JVM内存模型
  4. php.c drcom,校园网绕过Drcom安装自动登录程序到路由器
  5. SQL 性能不佳的几个原因
  6. 通过在Chipotle用餐了解模板方法设计模式
  7. linux该专接本还是工作_2020河北专接本报考录取比例相差最大专业TOP榜,出乎意料吗?...
  8. ++代码实现 感知机的原理_决策树ID3原理及R语言python代码实现(西瓜书)
  9. Hadoop企业级集群架构 - hadoop安装
  10. Donet.HighCharts
  11. 无心剑中译莎士比亚诗20首
  12. Netfilter学习之NAT类型动态配置(三)MASQUERADE内核空间的实现
  13. ubuntu系统安装微信过程与问题解决记录
  14. 阿里和微博的异地多活方案
  15. html405是什么错误,网站打开显示405错误信息如何解决?
  16. 揭示未来方向:2018中国TMT行业“领秀榜”盛典直击
  17. 【微信小程序】--注册小程序账号安装开发者工具(一)
  18. svm matlab 图像分割,勇哥的视觉实验:SVM分类器(二) 支持向量机的应用例子,图片分割...
  19. 【数字图像处理】直方图均衡化与规定化
  20. html5中密码要求有字母,转:正则表达式:密码必须至少包含八个字符、至少包含一个数字、小写和大写的字母以及特殊字符...

热门文章

  1. 利用innerHTML实现隐显效果-两种实现方法
  2. Java实训项目10:GUI学生信息管理系统 - 实现步骤 - 创建数据访问接口实现类
  3. 英语学习笔记2019-11-29
  4. java 获取本机的ip和mac_java获取本机ip和mac地址
  5. 2017.10.17 CF#441 F题 思考记录
  6. 2017.10.8 志愿者招募 失败总结
  7. 2017.4.1 kth_number 思考记录
  8. jboss esb 学习笔记与html的传输,Jboss_ESB学习笔记1.doc
  9. 【英语学习】【Level 08】U03 My Choice L5 The star that shines the brightest
  10. 【英语学习】【WOTD】newspeak 释义/词源/示例