gpt4 book ai didi

Solr 不接受带点的查询

转载 作者:行者123 更新时间:2023-12-01 17:25:56 26 4
gpt4 key购买 nike

我目前一次又一次地遇到一个问题。我在 Plone 4.2.6 系统上使用 Collective Solr 4.1.0 搜索。目前,当省略搜索时,只要搜索框中没有通配符,它​​就可以正常工作。例如
马修·罗杰斯教授博士
工作正常并返回良好的结果,例如 Person 'Prof.马修·罗杰斯博士的。

当我省略搜索时
马修·罗杰斯教授博士
Solr 不会返回任何结果。

我检查了该平台上有关此问题或关闭问题的所有其他问题,但没有一个得到正确回答。你们中有人知道为什么当我搜索包含点的内容时 Solr 查询过程会中断吗?非常感谢您的帮助!

最佳答案

collective.solr 有一个很棒的功能,您可以使用 plone 搜索中的 lucene 查询语法来查询 solr。

查询解析器语法: --> https://lucene.apache.org/core/2_9_4/queryparsersyntax.html

collective solr 有一个简单的测试,是否应该使用 Collective.solr 中的设置来破坏您的搜索查询,或者是否将其作为简单的 lucene 查询传递给 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 语法进行查询,因此在您的情况下它将不会显示任何结果。

几周前我遇到了同样的问题,您有以下选择:

  1. 只需添加一个点 - 这样 Collective.solr 就能识别带点的搜索词,而不是 lucene 查询。
  2. 在将搜索词传递到 Collective.solr 之前准备好您的搜索词。

第一个选项只是一个快速获胜的方法,因为有人会搜索带有逗号、分号、引号等的术语。

在将搜索词传递给搜索之前,我亲自自定义了搜索词。

据我所知,solr 分词器还删除了一些非字母数字字符

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 查询语法,最好的解决方案是准备类似于标记器的术语。

关于Solr 不接受带点的查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40158270/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com