Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/336.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/xpath/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 在Elasticsearch中使用ngram进行搜索_Java_<img Src="//i.stack.imgur.com/RUiNP.png" Height="16" Width="18" Alt="" Class="sponsor Tag Img">elasticsearch - Fatal编程技术网 elasticsearch,Java,elasticsearch" /> elasticsearch,Java,elasticsearch" />

Java 在Elasticsearch中使用ngram进行搜索

Java 在Elasticsearch中使用ngram进行搜索,java,elasticsearch,Java,elasticsearch,我可以在Elasticsearch中搜索术语 顺便说一句,我设置如下: .startObject("filter") .startObject("lowercase") .field("type", "lowercase") .endObject() .endObject() .startObject("filter") .startObject("ngram") .field("type", "nGram") .fiel

我可以在Elasticsearch中搜索术语 顺便说一句,我设置如下:

.startObject("filter")
    .startObject("lowercase")
         .field("type", "lowercase")
    .endObject()
.endObject()
.startObject("filter")
    .startObject("ngram")
        .field("type", "nGram")
        .field("min_gram", "3")
        .field("max_gram", "10")
    .endObject()
.endObject()
然后我试着画出这样的地图

builder.startObject().startObject(TYPE_TEST).startObject("properties");
   builder.startObject(title)
            .field("type", "string")
            .field("store", "yes")
            .field("analyzer", "series_analyzer")
            .field("boost", "10")
   .endObject();
 curl -XGET localhost:9200/test/_search?q="testte"
然后我像这样在整个领域中搜索“术语”

builder.startObject().startObject(TYPE_TEST).startObject("properties");
   builder.startObject(title)
            .field("type", "string")
            .field("store", "yes")
            .field("analyzer", "series_analyzer")
            .field("boost", "10")
   .endObject();
 curl -XGET localhost:9200/test/_search?q="testte"
我找不到查询“某些部分术语”的任何结果

相反,我可以通过这个查询得到很好的结果

curl -XGET localhost:9200/test/_search?q=title:testte
我只想用nGram搜索没有“标题”字段的词汇。如何在整个字段中搜索术语


请让我知道。提前感谢

只有在使用ngrams索引的字段上搜索时,才可以通过ngrams获得部分匹配。在您的例子中,它是映射中定义的
标题
字段。如果未在中指定字段,则默认情况下会使用
\u all
字段,该字段使用。您可以在查询中指定不同的默认字段,以避免为每个术语指定它。如果您想将ngrams应用于所有字段,您可以更改所有字段的映射,但我不建议这样做。 ngram倾向于大大增加索引的大小,因此我不会在任何地方应用它们。此外,通常最好对每个字段(或字段组)应用不同的文本分析,这通常是域驱动的

此外,
\u all
字段在开始使用和搜索所有内容时非常方便,但它与应用于所有字段的文本分析相同,这在生产中可能是您不希望依赖的。我宁愿建议长期禁用它


另一个提示:查看,这是大多数情况下使用的查询。查询字符串为您提供了更强大的功能,但同时也容易出错。除非您需要仅查询字符串提供的功能,否则我将使用匹配查询。

只有在使用ngrams索引的字段上搜索时,才可以通过ngrams获得部分匹配。在您的例子中,它是映射中定义的
标题
字段。如果未在中指定字段,则默认情况下会使用
\u all
字段,该字段使用。您可以在查询中指定不同的默认字段,以避免为每个术语指定它。如果您想将ngrams应用于所有字段,您可以更改所有字段的映射,但我不建议这样做。 ngram倾向于大大增加索引的大小,因此我不会在任何地方应用它们。此外,通常最好对每个字段(或字段组)应用不同的文本分析,这通常是域驱动的

此外,
\u all
字段在开始使用和搜索所有内容时非常方便,但它与应用于所有字段的文本分析相同,这在生产中可能是您不希望依赖的。我宁愿建议长期禁用它


另一个提示:查看,这是大多数情况下使用的查询。查询字符串为您提供了更强大的功能,但同时也容易出错。除非您需要仅查询字符串提供的功能,否则我将使用匹配查询。

谢谢您的回复。我可以用multiMatchQuery解决这个问题。谢谢。谢谢你的回复。我可以用multiMatchQuery解决这个问题。谢谢