gpt4 book ai didi

elasticsearch - ElasticSearch不会为常见查询字符串返回任何结果(使用不太常见的字符串)

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

我正在使用ElasticSearch做一些测试,但发现它对于极端通用的术语不会返回结果。我认为这可能是因为它超时,内存不足或其他相关原因,但是我对为什么没有得到任何错误反馈感到困惑。

这是代码片段:

// client & index ----------------------------------------------
$eC = new Elastica_Client();
$eI = $eC->getIndex('test_index');


// query string ---------------------------------------
$eQqs = new Elastica_Query_QueryString();
$eQqs->setDefaultOperator('AND');
$eQqs->setQuery('the'); ### <--- example of a common keyword,
// --- note that if I were to use something less common like "zoo"
// that it would return an expected result set


// search object --------------------------------------
$eQ = new Elastica_Query();
$eQ->setQuery( $eQqs );
$eQ->setFrom(1);
$eQ->setLimit(3);


// get result set -------------------------------------
$eRS = $eI->search( $eQ );


// output results ----------------------------------------
echo "total time: " . $eRS->getTotalTime() . "\n";
echo "total results: " . $eRS->getTotalHits() . "\n\n";

foreach( $eRS->getResults() as $result ) {
print_r( $result->getData() );
}

如评论中所述,如果我搜索一个不太常见的字符串,则它可以正常工作,并且我将得到如下内容:
total time: 292
total results: 21

Array
(
[id] => 1234
[name] => A day at the Zoo
...

但是,如果我搜索一些非常常见的东西(例如“the”),那么 $eRS->getResults()不会得到任何帮助,而是我得到了:
total time: 2
total results: 0

请注意,我已经确认索引中确实存在许多“the”实例。这里发生了什么?我做错了吗?如果不是,我该如何吐出一些有意义的错误,而不是这种看似出乎意料的结果集?

最佳答案

常用词,例如“一个”,“一个”,“和”,"is",“作为”,“在”,"is",“但是”,“由”,“用于”,“如果”,“在” ,“放入”,"is",“它”,“否”,“不是”,“的”,“在”,“或”,“这样”,“那个”,,“the” ,“他们的” ,“那么”,“那里”,“这些”,“他们”,“这个”,“到”,"is",“将”,“有”被称为停用词。这些单词非常常见,通常认为它们不会为全文搜索增加值(value)。因此,默认情况下在搜索过程中不会对它们进行索引和忽略。您可以更改单词列表或完全禁用它们by using non-default analyzer for your index

关于elasticsearch - ElasticSearch不会为常见查询字符串返回任何结果(使用不太常见的字符串),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13704939/

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