gpt4 book ai didi

search - 调solr短语查询搜索

转载 作者:行者123 更新时间:2023-12-01 14:40:23 25 4
gpt4 key购买 nike

我们正在尝试调整 DSE 搜索中的短语查询。例如,如果我们的列名 X 的值为“D A T A S T A X”,我们正在搜索 X 的精确匹配:“T A S T”

单词是用 whitespacetokenizer 标记的。

我们在数据库中有几亿条记录,所有索引都是内存(我们使用 pcstat 进行了测试)。然而,查询仍然需要 5-15 秒。如果所有索引都在内存中,为什么要花这么长时间来提取结果?我该如何调整它?

感谢任何帮助。

最佳答案

enter image description here

试试这个字段类型:

<fieldType name="custom_edge_ngram" class="solr.TextField" positionIncrementGap="100">
<analyzer type="index">
<tokenizer class="solr.KeywordTokenizerFactory"/>
<filter class="solr.PatternReplaceFilterFactory" pattern="([^A-Za-z0-9])" replacement="" replace="all"/>
<filter class="solr.LowerCaseFilterFactory"/>
<filter class="solr.NGramFilterFactory" minGramSize="2" maxGramSize="15"/>
</analyzer>
<analyzer type="query">
<tokenizer class="solr.KeywordTokenizerFactory"/>
<filter class="solr.PatternReplaceFilterFactory" pattern="([^A-Za-z0-9])" replacement="" replace="all"/>
<filter class="solr.LowerCaseFilterFactory"/>
</analyzer>
</fieldType>

此处 KeywordTokenizerFactory 分词器会将文本流准确地传递给过滤器。 PatternReplaceFilterFactory 将删除除字符和数字之外的所有内容。您可以根据需要进行配置。然后我们将流小写并生成 NGram。这是索引阶段。对于查询阶段,我们不执行 NGram,因为我们想要匹配精确的子字符串。

我们将使用 NGram 而不是 EdgeNGram,因为它将提供子字符串。 EdgeNGram 始终包含从开始或结束。所以 EdgeNGram 在这种情况下没有帮助。

希望这对您有所帮助。

关于search - 调solr短语查询搜索,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32080461/

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