我的所有单词的文件大约是60MB,搜索押韵现在需要大约几分钟。
SELECT *
FROM table
WHERE word LIKE '%rhyme'
多谢帮忙!
package pl.kamilkoszykowski.dopewriter;
import org.springframework.web.bind.annotation.*;
import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Paths;
import java.util.*;
import java.util.concurrent.*;
@RestController
@CrossOrigin("http://localhost:4200")
public class Controller {
Set<String> dictionary = getDictionary(); // SET WITH WORDS
@GetMapping("/rhyme/{word}")
public Set<String> rhymes(@PathVariable String word) throws InterruptedException {
String regex = "\\b[A-Za-z]*" + word + "\\b"; // RHYME TO SEARCH FOR IN DICTIONARY SET
Set<String> rhymesList = new HashSet<>();
int numRunnables = 64;
BlockingQueue<Runnable> queue = new ArrayBlockingQueue<Runnable>(numRunnables, true);
RejectedExecutionHandler handler = new ThreadPoolExecutor.CallerRunsPolicy();
ExecutorService executor = new ThreadPoolExecutor(numRunnables, numRunnables, 0L, TimeUnit.MILLISECONDS, queue, handler);
for (String a : dictionary) {
executor.execute(new Runnable() {
@Override
public void run() {
if (a.matches(regex)) {
rhymesList.add(a);
}
}
});
}
executor.shutdown();
while (executor.isTerminated() == false){
Thread.sleep(50);
}
return rhymesList;
}
public Set<String> getDictionary() { // READING TXT FILE
try {
List<String> list = new ArrayList<>(List.of(Files.readString(Paths.get("src/main/resources/dictionary.txt")).split(",")));
return new HashSet<>(list);
} catch (IOException e) {
return null;
}
}
}
迭代集合本身是一个耗时的过程。多种解决方式:
trie
数据结构中,并获取与regex匹配的根下的所有单词。--推荐。问题内容: 我认为我遇到了一个听起来比实际容易的问题……我不太确定。我想定义一个正则表达式,并且要构建一些与之匹配的字符串。 我可以导入具有该功能的任何模块吗?最好不要使用或暴力破解方法。必须有一种更优雅的方法来做到这一点。 问题答案: 我一直在研究一个小的帮助程序库,用于使用Python生成随机字符串 它包含一个方法,该方法允许您从正则表达式创建字符串: 目前,它适用于大多数基本正则表达式。
我有一个正在测试的方法,它返回一个对象列表。。。例如“Person”对象。 我有一个“预期的最后名字”列表来验证结果。 我目前有一个工作测试,它循环遍历“expectedLastNames”中的名称,并断言每个名称都包含在“Person”对象列表中。与此类似(请注意,以下代码段位于Kotlin中): 当断言通过时,这非常有效,并验证了我的方法。然而,当测试失败时,这是非常麻烦的,因为一旦遇到缺少的
本文向大家介绍在Java中搜索字符串中的字符。,包括了在Java中搜索字符串中的字符。的使用技巧和注意事项,需要的朋友参考一下 您可以使用String类的方法在字符串中搜索特定字母。此方法返回字符串中单词的位置索引(如果找到)。否则返回-1。 示例 输出结果
问题内容: 我想编写一个SQL查询,该查询在文本字段中搜索关键字,但是仅当它是“全字匹配”时(例如,当我搜索“ rid”时,它不应该与“ arid”匹配,但是应该匹配“摆脱”。 我正在使用MySQL。 幸运的是,在该应用程序中性能并不是至关重要的,并且数据库大小和字符串大小都非常小,但是我更喜欢在SQL中而不是在PHP中驱动它。 问题答案: 您可以使用和和字边界标记: 2020年更新:(实际上是2
android room查询将如何匹配一列数据?数据是否完全匹配或以搜索字符串开头 这似乎只给了我确切的匹配 谢谢
问题内容: 我试图在问题历史记录中找到问题的答案,但是当他们浏览了几十个我放弃的匹配答案后,它们又回到了一千多个。所以这是我的问题。 我希望能够找到字符串中正好六个数字的第一个序列。给定字符串“一些文本987654321和一些更多的文本123456,以及其他一些文本再次654321和最后的更多文本”,我想找到与123456序列匹配的正则表达式。 我是regex的新手,对它如何工作的简短解释会很有帮