Search 自定义通配符

Search 自定义通配符,search,solr,wildcard,Search,Solr,Wildcard,我是Solr的新手,我正在寻找一种方法来移植我的web应用程序的搜索功能,它有一个常规数据库来使用Solr索引。到目前为止,我的问题是我必须自定义通配符行为:例如,“?”应该是“0或1个字符”,而不是现在的任何字符,“+”应该是任何“空白”,而“#”应该是任何数字等等。有好的指针吗 谢谢 恐怕我知道没有简单的答案 对于0或1个字符-可以使用“或”查询替换原始查询。议员?在数据库搜索中,用例在Solr中变为-'mp或mp' 默认情况下,空白在文本字段中标记。因此,您可以考虑使用空白标记器作为自定义

我是Solr的新手,我正在寻找一种方法来移植我的web应用程序的搜索功能,它有一个常规数据库来使用Solr索引。到目前为止,我的问题是我必须自定义通配符行为:例如,“?”应该是“0或1个字符”,而不是现在的任何字符,“+”应该是任何“空白”,而“#”应该是任何数字等等。有好的指针吗


谢谢

恐怕我知道没有简单的答案

对于0或1个字符-可以使用“或”查询替换原始查询。议员?在数据库搜索中,用例在Solr中变为-'mp或mp'

默认情况下,空白在文本字段中标记。因此,您可以考虑使用空白标记器作为自定义“文本”字段的一部分。这里有几个例子。示例架构中的文本只进行空白标记化。你可能想读一下Tokenizer


没有等效数字-您可以执行term1*或term2*或term3*。。。您还可以使用支持数值函数的函数查询

在这种情况下,最好的选择似乎是在搜索中使用正则表达式。更多详细信息可在此处找到:

这并不完全是我想要的,因为我必须在后面构建自己的solr查询,而且我感觉滥用正则表达式会在我的服务器上增加一点开销。我做的测试看起来很快


我会把这个问题留一段时间,也许有人能想出一个更好的答案。

我在想,也许有一种方法可以编写一个新的查询处理程序,或者像在类中那样重写现有的查询处理程序。没有简单的答案我也能活下去,没问题。至于“?”转换为“AB”或“A?B”,我可以这样做,但对于10个问号,我必须构建1024个值来查询。