我是Solr的新手,我正在寻找一种方法来移植我的Web应用程序的搜索功能,该应用程序具有使用Solr索引的常规数据库。到目前为止,我的问题是我必须自定义通配符行为:例如,“?”应该是“0或1个字符”而不是现在的任何字符,“+”应该表示任何“空格”,“#”应该是任何数字,依此类推。有什么好的指针吗?
谢谢!
答案 0 :(得分:0)
我很害怕,我知道没有简单的答案。
对于0或1个字符 - 您可以使用“OR”查询替换原始查询。例如。熔点?你的数据库搜索用例变成了 - 'mp OR mp?'在索尔。
默认情况下,在文本字段中对空格进行标记。因此,您可以查看使用空格标记器作为自定义“文本”字段的一部分。有几个例子。示例模式中的text_ws仅执行空格标记。你想要读取标记器。
http://wiki.apache.org/solr/AnalyzersTokenizersTokenFilters
没有数字等效 - 您可以执行term1 * OR term2 * OR term3 * ...等。您还可以使用支持数字函数的函数查询。 http://wiki.apache.org/solr/FunctionQuery
答案 1 :(得分:0)
在这种情况下看起来最好的选择是在搜索中使用正则表达式。更多细节可以在这里找到:http://1opensourcelover.wordpress.com/2013/09/29/solr-regex-tutorial/
这并不是我想要的,因为我必须在后面构建我自己的solr-query,我觉得正则表达式滥用会在我的服务器上产生更多的开销。对于测试我看起来很快。
我会暂时搁置这个问题,也许有人可以提出更好的答案。