在我已经使用以下映射索引的 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,它只向我显示在描述中具有“跟随”的结果。
Q1:为什么空白不在 setFields 上工作,而是在 _all 上工作?
使用匹配查询时
$matchQuery = new \Elastica\Query\Match();
$matchfield = "user.description";
$queryToMatch = "follow back";
$matchQuery->setFieldQuery($matchfield, $queryToMatch);
它还仅显示了两个仅在描述中具有“跟进”的结果。但是在将匹配字段更改为_all后,它会在描述字段中显示很多包含“后续”的结果
Q2。为什么会这样?如何搜索空格分隔的单词?