Lucene “怎么做?”;载于「;使用弹性搜索
假设我有一个文本句子,并希望找到在该句子中找到字段X的所有文档 示例: “敏捷的棕色狐狸跳过了懒狗”是我的一句话 我有3份文件。每个字段都有一个名为关键字的字段:Lucene “怎么做?”;载于「;使用弹性搜索,lucene,
elasticsearch,Lucene,
elasticsearch,假设我有一个文本句子,并希望找到在该句子中找到字段X的所有文档 示例: “敏捷的棕色狐狸跳过了懒狗”是我的一句话 我有3份文件。每个字段都有一个名为关键字的字段: 1,关键字=福克斯 2,关键字=狗 3,关键字=猫 我想运行一个查询,检查关键字是否出现在提供的值中,以便1和2匹配,但3不匹配 我检查了文档,认为我可以用“fuzzy_like_this”来完成,但它会返回没有“keyword”字段的文档 有人能给我指出正确的方向吗?只需使用带有适当分析器的查询解析器进行搜索,如: Analyz
- 1,关键字=福克斯
- 2,关键字=狗
- 3,关键字=猫
有人能给我指出正确的方向吗?只需使用带有适当分析器的查询解析器进行搜索,如:
Analyzer analyzer = new StandardAnalyzer(Version.LUCENE_48);
QueryParser parser = new QueryParser(Version.LUCENE_48, "keyword", analyzer);
Query query = parse.parse("The quick brown fox jumped over the lazy dog");
int maxHits = 10; //Or however many you want
TopDocs topdocs = indexSearcher.search(query, maxHits);
上面的查询将搜索关键字字段中存在的每个术语,因此查询将类似于(默认情况下是停止词,因此将被删除):
在elasticsearch中,等价物是
谢谢。这正是我需要的。从查询字符串的描述来看,这似乎并不明显,但将其付诸实践,效果非常好。
keyword:quick keyword:brown keyword:fox keyword:over keyword:lazy keyword:dog
{
"query_string" : {
"default_field" : "keyword",
"query" : "The quick brown fox jumped over the lazy dog"
}
}