gpt4 book ai didi

java - 在 apache solr 中搜索 *n@domain* 时出错

转载 作者:行者123 更新时间:2023-11-30 03:52:19 25 4
gpt4 key购买 nike

字段定义

<field name="email" type="text_general" indexed="true" stored="true" />     

查询

email : "*n@domain*"    

结果

没有数据。

我的问题是,我实际上在 solr 中索引了符合我的条件的数据。但它没有反射(reflect)在查询结果中。我的查询模式是否存在问题。

最佳答案

我猜您的字段中没有文本 *n@domain* 。相反,您在术语中间的某个位置有 n@domain (或者您认为如此)。您可能会遇到一些问题。我假设您的字段使用 StandardAnalyzer

首先,短语查询中没有通配符。 field:"query terms" 是一个短语查询,这意味着匹配可以跨越多个(分析后)术语。查询解析器语法不支持短语查询中的通配符。因此,您的查询中的星号就是字面星号。

其次,现在您正在搜索email:*n@domain*,好多了,但仍然没有运气。通配符查询会绕过分析,并且您的电子邮件很可能会在索引中进行分析。对于像“test@domain.com”这样的条目,您实际上可能拥有三个术语“test”、“domain”和“com”。您可以不分析该字段以进行搜索,就像您在此处指出的那样,但这实际上取决于您来确定这是否是正确的方法。

一旦你解决了这个问题,你可能会有一些工作,但可能会注意到性能很糟糕。前导通配符通常在默认情况下被禁用,因为它们会导致糟糕的性能,因为它们需要对所有术语进行线性扫描才能枚举匹配项,而不是有效地利用索引。有一些策略可以允许使用前导通配符而不会对性能造成严重影响,例如 ReversedWildcardFilter

关于java - 在 apache solr 中搜索 *n@domain* 时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24124280/

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