gpt4 book ai didi

solr - Lucene QueryParse 丢弃“解析时

转载 作者:行者123 更新时间:2023-12-02 16:32:34 25 4
gpt4 key购买 nike

我有一个查询 -license:"CC-BY-NC"AND -license:"CC-BY-ND 4.0 (Int)" 将像这样传递到 PrecedenceQueryParser.parse 中:

Query query = new PrecedenceQueryParser().parse(filter, '')

但是在生成的查询中你可以看到,子句像 -lincense:CC-BY-NC,""丢失了。

有什么设置可以保留“”吗?

enter image description here

=====================更新========================= ==

我明白,因为我正在寻找 CC-BY-ND 4.0 (Int) 的匹配项,没有双引号(双引号只是用来使它成为一个短语)。这就是为什么 query.clauses[1].query 在 CC-BY-ND 4.0 (Int) 周围没有“”

现在我这样做:

    def bqb = new BooleanQuery.Builder()
clauses.each { clause ->
bqb.add(clause.query, clause.prohibited ? BooleanClause.Occur.SHOULD : BooleanClause.Occur.MUST_NOT)
}

String s = bqb.build().toString()

构建一个 BooleanQuery 并将子句放在一起,

然后 s 等于 license:CC-BY-ND 4.0 (Int) license:CC-BY-NC

这绝对不是我想要的,我需要CC-BY-ND 4.0 (Int) 被双引号包围。有什么办法吗?

Gibbs 可能是一个解决方案,但我认为有点棘手。

最佳答案

一些附加信息,添加到@gibbs 提供的答案中:

使用 classic query parser syntax 时(这是问题中使用的),那么以下字符都具有特殊含义,因此可能需要在它们出现的任何搜索词中进行转义:

+  -  &&  ||  !  (  )  {  }  [  ]  ^  "  ~  *  ?  :  \  /

请注意,在两种情况下,这些是字符组:&&||

此列表已记录 here .

处理所有这些字符的最简单方法是将每个搜索词传递给 classic QueryParser ,在构建搜索表达式之前:

org.apache.lucene.queryparser.classic.QueryParser;

例如:

String escapedSearchTerm = QueryParser.escape(searchTerm)

关于solr - Lucene QueryParse 丢弃“解析时,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63276920/

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