gpt4 book ai didi

Elasticsearch - 使用撇号搜索单词

转载 作者:行者123 更新时间:2023-11-29 02:46:34 25 4
gpt4 key购买 nike

我希望能够搜索到下面的词

文森特文森特文森特的

目前数据库和ES中的测试是Vincent的

是否可以检测所有格并忽略撇号。我看过 Word-Delimiter,但似乎找不到合适的解释

最佳答案

您需要了解 elasticsearch 的分析器是如何工作的。分析器执行标记化(将输入拆分为一堆标记,例如空格)和一组标记过滤器(过滤掉您不需要的标记,如 stop words ,或修改标记,如 lowercase token filter它将所有内容都转换为小写)。

分析在两个非常特定的时间执行 - 在索引期间(当您将内容放入 elasticsearch 时),以及根据您的查询,在搜索期间(在您正在搜索的字符串上)。

也就是说,默认分析器是 standard analyzer其中包括 standard tokenizer , standard token filter (从标准分词器中清除分词),lowercase token filter , 和 stop words token filter .

举个例子,当您保存字符串“I love Vincent's pie!”时进入 elasticsearch,并且您使用的是默认的标准分析器,您实际上存储的是“i”、“love”、“vincent”、“s”、“pie”。然后,当您尝试使用 term 查询(未分析)搜索“Vincent's”时,您将找不到任何内容,因为“Vincent's”不是其中之一 token !但是,如果您使用匹配 查询(经过分析)搜索“Vincent's”,您会发现“I love Vincent's pie!”因为“vincent”和“s”都能找到匹配项。

底线,要么:

  1. 在搜索自然语言字符串时使用经过分析的查询,例如 match
  2. 根据您的需要设置分析仪。如果您想变得复杂,您可以设置一个自定义分析器来执行空白分词器、字母分词器或模式分词器,以及您想要的任何过滤器。这取决于您的用例,但如果您要处理自然语言句子,我不建议这样做,因为标准分词器是为自然语言搜索而构建的。

参见 http://www.elasticsearch.org/guide/en/elasticsearch/reference/current/analysis.html进一步阅读。

关于Elasticsearch - 使用撇号搜索单词,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14456273/

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