java - Lucene 搜索最长公共(public)子串

标签 java elasticsearch solr lucene

我正在使用 Lucene 6.0.0,并且猜测我的问题可以通过 FuzzuQuery 解决,只要 editDistance > 2 在 Lucene 中得到支持。

我正在使用普通的 Java Lucene API(也不是 SOLR 或 ElasticSearch)。

假设归档的非标记化索引文本是 - This is Ram's House ,当我使用 Ramram 搜索时,我应该得到This is Ram's House 作为匹配,因为在某种意义上三个连续字符匹配 - 这是一种具有超过两个编辑距离的模糊匹配要求。

使用我的名字是 Ram,我兄弟的名字是 Shyam 进行搜索也应该会得到 This is Ram's House 作为匹配项。

最长公共(public)子字符串中的最小字符数可能有限制,目前我们应该可以将三个字符作为限制。

根据我们的分析,有一个业务问题可以通过这种方式解决。

Lucene 可以吗?

可以使用任何其他工具 - 例如 SOLR、ElasticSearch 等吗?

最佳答案

我可以通过在 lucene 中使用 N-Gram 索引技术来解决这个问题 - NGramTokenizer

我根据我的要求选择 minGrammaxGram 值,并且我已准备好索引的子字符串,我可以查询这些术语的索引。

它大大增加了生成和索引术语的数量,但解决了我的问题。

More Explanation here

关于java - Lucene 搜索最长公共(public)子串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43734252/

相关文章:

Java Nio 绝对路径转相对路径

java - 使用声明字段反射提供的方法

elasticsearch - 无法通过kubernetes入口调用外部资源

elasticsearch - 在Elastic Search中,如何从索引中的每种类型中获取结果(限于10个查询)?

sql - 你如何在 solr 中按天对日期进行分组?

java - 非托管线程 Spring Quartz Websphere Hibernate

java - 堆栈溢出错误是否被视为内存泄漏错误?

elasticsearch - 如何获得Elasticsearch多匹配模糊搜索以始终返回最少数量的结果

Solr 配置复制

java - Apache SOLR 和字符串范围搜索