在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被註釋掉它給了我很多的結果一樣
IF YOU FOLLOW ILL FOLLOW BACK! :) 100% follow back! :)
Follow me i follow back :) instagram:juliemar25 i follow back
但之後取消註釋setFields和defaultOperator到和,則表明沒有結果。 和取消註釋setFields和defaultOperator到OR,它表明我只是結果有「跟隨」在描述而已。
Q1:爲什麼空白不能在setFields上工作,而是在使用_all?
使用匹配查詢
$matchQuery = new \Elastica\Query\Match();
$matchfield = "user.description";
$queryToMatch = "follow back";
$matchQuery->setFieldQuery($matchfield, $queryToMatch);
同時也表明只有兩個結果只有在說明「跟着背」。但改變以匹配場_all這表明不少成果,它包含後描述字段
Q2「跟着背」。爲什麼會發生?我如何搜索空格分隔的單詞?
在這種情況下,我必須使用精確匹配和使用MathcQuery的短語? 它的平均QueryString只適用於術語(分析)字段? –
感謝@keety重新編制索引後,通過分析上述問題解決了上述問題。 但現在與mathQuery,如果我啓用matchType短語和搜索短語,它給了我 **致命錯誤:在F:\ wamp \ www \ zendProjects10 \ elasticsearch中帶有消息'1'的未捕獲異常'Elastica \ Exception \ PartialShardFailureException' \ ES \彈性曲線\傳輸\ HTTP協議。在線154上的php ** –
另請問。如何搜索「follow bac」,因爲這裏是k的湖。它不匹配任何東西。我必須使用哪種方法?謝謝 –