solr - solr查询中的子字符串匹配

标签 solr lucene

我有一个要求,我必须在查询中匹配一个子字符串。 例如,如果该字段具有值:

PREFIXabcSUFFIX

我必须创建一个匹配 abc 的查询。我总是知道前缀的长度。

由于空间限制,我不能使用 EdgeNgramNgram。(因为它们会创建更多索引。)

所以我需要在查询时而不是在索引时执行此操作。使用像 *abc* 这样的通配符作为前缀会对性能产生很大影响。

因为我会知道前缀的长度,所以我希望有一些方法可以做类似 ....abc* 的事情,其中​​点代表前缀的确切长度,以便查询不像通配符查询(*abc*)那样搜索整个索引那么糟糕。

这在 solr 中可行吗?感谢您的宝贵时间。

Solr 版本:4.10

最佳答案

当然,通配符语法是 documented here ,您可以搜索类似 ????abc* 的内容。您也可以使用正则表达式查询。

但是,与 *abc* 相比,它的性能优势将非常小。它仍然必须对整个索引执行顺序搜索。但是,如果您无法改进分析来支持您的搜索需求,则可能无法解决这个问题 (GIGO)。

关于solr - solr查询中的子字符串匹配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41174302/

相关文章:

ruby-on-rails - 在 Blacklight 中使用扩展 DisMax 查询解析器

apache - 无法运行导入 org.apache.lucene.analysis.Analyzer 的 Java 程序

solr - 如何在lucene中查询整数、 float 以及如何存储(NumericComparator)?

solr - 我错误地从 Solr Admin UI 卸载了默认的 Solr 集合

php - 索引时,当整数字段类型留空时,Solr 返回 400 Status Bad Request

ruby-on-rails - ruby 2.1 rails 4 sunspot solr 测试在套件中失败但单独通过

java - Solr分页性能

java - 数值范围查询

java - lucene:使 StandardTokenizer 适应 Twitter 数据

java - 如何在 Lucene 中查询自动完成/建议?