当前位置: 首页 > 知识库问答 >
问题:

卢森。NET 2.9-多字段QueryParser、增强字段、词干和前缀

茅桐
2023-03-14

我有一个系统,其中搜索查询具有不同boost值的多个字段。它在Lucene上运行。净额2.9。4因为这是一个Umbraco(6.x)网站,这就是Lucene的版本。NET的CMS使用。

我的客户问我是否可以添加词干分析,所以我编写了一个自定义分析器,可以执行标准/小写/停止/PorterStemmer。堵塞过滤器似乎工作正常。

但是现在,当我试图将我的新分析器与MultiFieldQueryParser一起使用时,它找不到任何东西。

MultiFieldQueryParser正在返回一个包含词干词的查询-例如,如果我搜索“The figure”,作为查询的一部分,它返回的结果是:

关键字:图^4.0标题:图^3.0收藏:图^2.0

i、 它搜索正确的字段并应用正确的提升,但试图在包含未插入词干的词的索引上对插入词干的词进行精确搜索。

我认为实际需要的是multifiedqueryparser返回PrefixQuery类型的子句列表。因此,它将输出一个查询,如

关键词:figur*^4.0标题:figur*^3.0集合:figur*^2.0

如果我尝试在术语的末尾添加一个通配符,并将其输入到解析器中,那么词干分析器不会启动。i、 它构建一个查询来查找“figure*”。

有没有办法将多字段QueryParser增强和前缀查询结合起来?

共有1个答案

梁浩涆
2023-03-14

您需要使用自定义分析器重新索引。仅在查询时应用词干管理器是无用的。你可以用通配符拼凑一些东西,但它仍然是一个丑陋、不可靠的拼凑。

 类似资料:
  • 我有以下ElasticSearch DSL查询 我希望在与字段匹配时提高得分,也希望在字段匹配时降低得分。 我试过很多事情,比如: 或 但不能让它工作。我也尝试过将should和must等结合起来,但并没有走得太远--甚至不值得分享。有没有一种简单的方法可以做到这一点,而不需要重新对我所有的文档进行重新德行/重新打分?使用ES查询(而不是ES-DSL)的答案也会很有帮助。

  • 问题内容: 我正在使用’Lucene.Net’库,并且有以下问题。 不是创建两个单独的QueryParser对象并使用它们来获得两个Hits对象,而是可以使用一个QueryParser对象在两个字段上进行搜索,这样我只有一个Hits对象,它可以为我提供每个文档的总体得分? 问题答案: 有3种方法可以做到这一点。 第一种方法是手动构造查询,这是QueryParser内部的工作。这是执行此操作最强大的

  • 问题内容: 我是ES的新手,我正在尝试建立一个查询,该查询将对多个字段使用phrase_prefix,因此我不必进行多次搜索。 这是到目前为止我得到的: 有人知道如何搜索多个字段,例如“ last_name”吗? 问题答案: 您正在使用的文本查询已被弃用(有效重命名),而改为使用match query 。匹配查询支持单个字段,但是您可以使用multi_match查询,该查询支持完全相同的选项并允许

  • 字段自增 const flow = await this.ctx.model.Flow.findOne({ where: { art_id } }); await flow.increment('index', { by: 900 }); 字段自减 const flow = await this.ctx.model.Flow.findOne({ where: { art_id } }); awai

  • 例如,endpoint 因此,如果有人将以下json发送到我的endpoint,endpoint应该接受它 但如果发送以下json,则失败,因为它不包含。

  • 试图让搜索按我需要的方式进行。。。目前,我使用StandardAnalyzer()将数据分析到索引中,然后使用QueryParser()和Query()并执行。。。如果文档中有“可疑”一词,搜索“可疑”,我会在其中找到我的文档,但如果搜索“可疑”,我不会得到任何结果。。。所以我的问题是,我想对我的搜索实现词干分析或更好的查询。。。我知道你会得到SnowBallaAnalyzer用于堵塞,但它在Lu