gpt4 book ai didi

c# - Lucene.Net - 如何将空格分隔的短语视为单个标记?

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

我已经使用 Lucene.Net 实现了一个搜索工具。该指数包括英国学历,包括“A Level”。

我希望用户能够使用短语“A Level”进行搜索,但使用标准分析器时,“A”作为停用词被删除,因此只有“Level”被索引/搜索。

解决此问题的最佳选择是什么?我猜我需要通过创建自定义分析器以某种方式将“A Level”标记为“A-Level”或类似内容。

这是最好的方法吗?

编辑:

请注意,我不想让整个搜索成为一个短语查询。即在我的搜索框中,我希望用户能够输入 <"A Level"AND English Maths Physics>,这将返回任何具有 "A Level"和英语数学或物理的内容。更新问题以反射(reflect)这一点。

除了“A Level”之外,我特别希望在所有情况下都使用“A”作为停用词

短语“A Level”不在其自己的特定字段中,而是在可能包含该短语的自由文本字段中。

最佳答案

使用 PhraseQuery - 可以通过 bool 构造与任何其他组合

已编辑

您不需要搜索整个词组。对于您的示例,它看起来如下所示(抱歉,这是伪代码,因为我现在无法对其进行测试)

 BooleanQuery rootQuery = new ...
PhraseQuery q1 = new PhraseQuery("A Level");
TermQuery q2 = new TermQuery("English");
TermQuery q3 = new TermQuery("Maths");
TermQuery q4 = new TermQuery("Physics");
rootQuery.Add(q1, BooleanClause.Occur.SHOULD); //or MUST - depends on you
rootQuery.Add(q2, BooleanClause.Occur.SHOULD);
rootQuery.Add(q3, BooleanClause.Occur.SHOULD);
rootQuery.Add(q4, BooleanClause.Occur.SHOULD);

关于c# - Lucene.Net - 如何将空格分隔的短语视为单个标记?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4689999/

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