gpt4 book ai didi

search - 使用 Lucene SpanQueries 进行句子感知搜索

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

是否可以使用 Lucene SpanQuery 查找术语“红色”、“绿色”和“蓝色”全部出现在单个句子中的所有出现情况?

我的第一个(不完整/不正确)方法是编写一个分析器,将特殊的句子标记标记和句子的开头放置在与句子的第一个单词相同的位置,然后查询类似于以下内容的内容:

SpanQuery termsInSentence = new SpanNearQuery(
SpanQuery[] {
new SpanTermQuery( new Term (MY_SPECIAL_SENTENCE_TOKEN)),
new SpanTermQuery( new Term ("red")),
new SpanTermQuery( new Term ("green")),
new SpanTermQuery( new Term ("blue")),
},
999999999999,
false
);

SpanQuery nextSentence = new SpanTermQuery( new Term (MY_SPECIAL_SENTENCE_TOKEN));

SpanNotQuery notInNextSentence = new SpanNotQuery(termsInSentence,nextSentence);

当然,问题是 nextSentence 并不是真正的下一个句子,它是任何句子标记,包括termsInSentence 匹配的句子。因此这行不通。

我的下一个方法是创建分析器,将标记放置在句子之前(即在第一个单词之前,而不是与第一个单词位于同一位置)。这样做的问题是,我必须考虑由 MY_SPECIAL_SENTENCE_TOKEN 引起的额外偏移。更重要的是,当我使用简单的模式来分割句子时(例如在 /\.\s+[A-Z0-9]/ 上分割),一开始这会特别糟糕,因为我会当我搜索 U 时,必须考虑所有(错误)句子标记。 S.S. Enterprise.

那么...我应该如何处理这个问题?

最佳答案

我会将每个句子索引为 Lucene 文档,包括一个标记该句子来自哪个源文档的字段。根据您的源 Material ,句子/LuceneDoc 的开销可能是可以接受的。

关于search - 使用 Lucene SpanQueries 进行句子感知搜索,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10593715/

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