gpt4 book ai didi

java - 当语言被覆盖时搜索停用词无法按预期工作

转载 作者:行者123 更新时间:2023-12-02 02:43:38 24 4
gpt4 key购买 nike

以下示例尝试演示语言选择对文本索引(和文本搜索)的影响

MongoDB Documentation: Specify the Index Language within the Document

final MongoDatabase db = initRandomDatabase();
final MongoCollection<Document> col1 = initCollection(db, "col1");
final String textField = "text";
final String languageField = "language";
int idCounter = 0;
col1.createIndex(new Document(textField, "text"), new IndexOptions().defaultLanguage("french"));

final String[] words = {"cat", "chat", "katze", "and", "et", "und"};
final String[] languages = {"english", "french", "german"};
for (final String word : words) {
col1.insertOne(
new Document(ID, idCounter++)
.append(textField, word)
);
for (final String language : languages) {
col1.insertOne(
new Document(ID, idCounter++)
.append(textField, word)
.append(languageField, language)
);
}
}

final String frenchStopWordToFind = "et";
final FindIterable<Document> frenchStopWordSearchResults = col1.find(new Document("$text", new Document("$search", frenchStopWordToFind)));
printTitledDocumentMongoIterable("French Stop Word To Find \"" + frenchStopWordToFind + "\"", frenchStopWordSearchResults);

问题是搜索 et 时,即使某些文档中存在语言覆盖,也不会返回任何结果。

我预计,对于 language 字段设置为另一种语言(非法语)的文档,单词 et 将被索引,并且搜索结果将包含它

最佳答案

以下两种语言

  1. 字段的语言(从集合的文本索引继承或在语言字段中指定)

  2. $text 搜索查询可选参数中指定的语言 $language

要查找的单词必须不是停用词,才能在搜索查询中找到该单词。

搜索查询$text运算符的可选$language参数的默认值与索引的默认语言相同。

由于问题中的示例没有为 $text 查询指定不同的语言,因此 $text 查询使用与索引相同的语言。因此,单词“et”被视为停用词 a 未找到。

关于java - 当语言被覆盖时搜索停用词无法按预期工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57161906/

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