我现在一遍又一遍地遇到一个问题.我在Plone 4.2.6系统上使用Collective Solr 4.1.0搜索.目前,省略搜索时,只要搜索框中没有通配符,它就可以正常工作.所以举个例子
Mathew Rogers教授
工作得很好,并返回良好的结果,如一个人的教授. Mathew Rogers博士.
当我省略搜索时
Mathew Rogers教授
Solr不会返回任何结果.
我检查了这个平台上有关此问题或关闭问题的所有其他问题,但没有一个得到正确回答.当我搜索包含例如点的内容时,你们是否知道为什么Solr查询过程会中断?非常感谢帮助!
最佳答案 collective.solr有一个很棒的功能,你可以使用plone搜索中的lucene查询语法查询solr.
查询解析器语法:
– > https://lucene.apache.org/core/2_9_4/queryparsersyntax.html
如果它应该使用collective.solr中的设置来破坏你的搜索查询,或者如果它将它作为简单的lucene查询传递给solr,那么集体solr有一个简单的测试.
The test is really simple, but the mangle code is hart to understand (at least for me):
simpleTerm = compile(r'^[\w\d]+$', UNICODE)
...
simpleCharacters = compile(r'^[\w\d\?\*\s]+$', UNICODE)
如果你的术语不匹配,collective.solr假设你正在尝试使用简单的lucene语法进行查询,因此它将在你的情况下没有显示结果.
几个星期前我遇到了同样的问题,你有以下几种选择:
>只需添加一个点 – 所以collective.solr识别带有点的搜索项而不是lucene查询.
>在将搜索词传递给collective.solr之前准备它.
第一个选项只是一个快速获胜,因为会有人,他会用逗号,分号,引号等搜索一个术语.
在将其传递给搜索之前,我亲自定制了搜索词.
Afaik solr tokenizer也删除了几个不是字母数字的字符
This SO answer explains how the default tokenizer works
Splits words at punctuation characters, removing punctuations. However, a dot that’s not followed by whitespace is considered part of a token. Splits words at hyphens, unless there’s a number in the token. In that case, the whole token is interpreted as a product number and is not split. Recognizes email addresses and Internet hostnames as one token.
因此,您需要如何处理非字母数字术语:-)
如果您不想使用lucene查询语法,那么最好的解决方案就是准备类似于tokenizer的术语.