2016-05-16 257 views
0

我有一堆存儲在elasticsearch中的文檔,字段爲titleabstract。我必須搜索文檔以查找像'word1 word2 ..'這樣的查詢。目前我使用的彈簧數據使用MultiMatchQueryBuilder進行'和'關鍵字查詢搜索

MultiMatchQueryBuilder multiMatchQueryBuilder = new MultiMatchQueryBuilder(query, "abstract", "title"); 
Iterable<Document> result = documentRepository.search(multiMatchQueryBuilder); 

這給了我所有包含word1word2的文件。我如何匹配所有關鍵字?它應該給我的文檔包含查詢word1word2中的所有單詞。基本上我想要搜索查詢中所有關鍵字的and而不是or

+0

做你想做的順序是一樣太(phrase_search)?即如果您搜索''word1 word2',您不希望''word2 word1'被檢索。 – Richa

+1

你試過'新的MultiMatchQueryBuilder(查詢,「抽象」,「標題」)。運營商(Operator.AND)'? – Val

+0

@Val,這似乎工作。我本來應該和建造者多玩一點。 – Vishnu

回答

2

可以指定AND操作是這樣的:

MultiMatchQueryBuilder multiMatchQueryBuilder = new MultiMatchQueryBuilder(query, "abstract", "title") 
    .operator(Operator.AND);  // <---- add this 
Iterable<Document> result = documentRepository.search(multiMatchQueryBuilder);