【发布时间】: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 我跟在后面
但是在将 setFields 和 defaultOperator 取消注释为 AND 之后,它没有显示任何结果。 并且通过将 setFields 和 defaultOperator 取消注释为 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