【问题标题】:Searching with space not working on specific field by Query String通过查询字符串搜索空间不适用于特定字段
【发布时间】:2014-07-24 10:38:49
【问题描述】:

在我已经使用以下映射索引的 Twitter 用户描述字段中搜索“follow back”。

注意:仅突出显示部分映射。

1.

'analysis' => array(
        'analyzer' => array(    
                'myanalyzer' => array(
                        "type"  =>  "standard",
                        'stopwords' => '_none_',
                ),
        )
  )

2.

$mapping->setParam('index_analyzer', 'myanalyzer'); 
$mapping->setParam('search_analyzer', 'myanalyzer');

3.

'description'  => array('type' => 'string', "index" => "not_analyzed"),

4.

//search something
$queryString = new \Elastica\Query\QueryString();
$queryString->setDefaultOperator( "AND" );  
// $queryString->setFields(array("user.description"));
$queryString->setQuery('follow back');

当 setFields 被评论时搜索它会给我很多结果,比如

如果您关注,我将继续关注! :) 100% 关注! :)

跟我来,我跟在后面 :) instagram:juliemar25 我跟在后面

但是在将 setFieldsdefaultOperator 取消注释为 AND 之后,它没有显示任何结果。 并且通过将 setFieldsdefaultOperator 取消注释为 OR,它只显示在描述中没有 “follow” 的结果否则。

Q1:为什么空白不适用于 setFields 而适用于 _all?

使用匹配查询时

$matchQuery = new \Elastica\Query\Match();
$matchfield = "user.description";
$queryToMatch = "follow back";

$matchQuery->setFieldQuery($matchfield, $queryToMatch); 

它还只显示了两个仅在描述中具有“follow back”的结果。但是在将匹配字段更改为 _all 后,它会显示很多结果,其中包含 "follow back" 在描述字段中

第二季度。为什么会这样?如何搜索空格分隔的单词?

【问题讨论】:

    标签: search elasticsearch elastica


    【解决方案1】:

    这是因为您已根据上面的映射将“描述”字段设置为 not_analyzed。

    这将导致描述字段有效负载按原样编入索引,并且当“描述”字段是精确搜索短语(在本例中为“跟进”)时发生匹配

    删除 "index" => "not_analyzed" 应该可以修复它。

    【讨论】:

    • 在这种情况下,我必须使用 MathcQuery 与短语完全匹配?它的平均 QueryString 仅适用于术语(已分析)字段?
    • 感谢@keety 重新索引后分析上述问题已解决。但是现在使用 mathQuery,如果我启用 matchType Phrase 并搜索短语,它会给我 Fatal error: Uncaught exception 'Elastica\Exception\PartialShardFailureException' with message '1' in F:\wamp\www\zendProjects10\elasticsearch\ES\第 154 行的 Elastica\Transport\Http.php
    • 请提出另一个问题。我如何搜索“follow bac”,因为这里是 k 湖。它不匹配任何东西。我必须使用哪种方法?谢谢
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-09-15
    • 2018-08-08
    • 1970-01-01
    • 2022-08-17
    • 2011-06-17
    相关资源
    最近更新 更多