我有一个要求,我必须在查询中匹配一个子字符串。 例如,如果该字段具有值:
PREFIXabcSUFFIX
我必须创建一个匹配 abc
的查询。我总是知道前缀的长度。
由于空间限制,我不能使用 EdgeNgram
和 Ngram
。(因为它们会创建更多索引。)
所以我需要在查询时而不是在索引时执行此操作。使用像 *abc*
这样的通配符作为前缀会对性能产生很大影响。
因为我会知道前缀的长度,所以我希望有一些方法可以做类似 ....abc*
的事情,其中点代表前缀的确切长度,以便查询不像通配符查询(*abc*
)那样搜索整个索引那么糟糕。
这在 solr 中可行吗?感谢您的宝贵时间。
Solr 版本:4.10
最佳答案
当然,通配符语法是 documented here ,您可以搜索类似 ????abc*
的内容。您也可以使用正则表达式查询。
但是,与 *abc*
相比,它的性能优势将非常小。它仍然必须对整个索引执行顺序搜索。但是,如果您无法改进分析来支持您的搜索需求,则可能无法解决这个问题 (GIGO)。
关于solr - solr查询中的子字符串匹配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41174302/