尝试使用CompletionSuggester for autocomplete特性,通过Java的RestHighLevelClient实现CompletionSuggester有不同的方法,想知道以下这些方法之间(在性能/查询执行速度方面)有什么区别吗
1:使用CompletionSuggestionBuilder:
val completionSuggestionBuilder = SuggestBuilders.completionSuggestion("suggestedNames").prefix("ban", Fuzziness.ONE).size(10)
val suggestBuilder = SuggestBuilder().addSuggestion("find_doc_by_name", completionSuggestionBuilder)
val searchSourceBuilder = SearchSourceBuilder().suggest(suggestBuilder)
val searchRequest = SearchRequest("bus_locations").source(searchSourceBuilder)
val searchResponse = restClient.search(searchRequest, RequestOptions.DEFAULT)
2:使用SimpleQueryString
val query = """{"suggest":{"loc-suggest":{"prefix":"Ban","completion":{"field":"suggestedNames","size":10,"fuzzy":{"fuzziness":1},"contexts":{"locationType":[{"context":"AREA","boost":1},{"context":"CITY","boost":1}],"geolocation":[{"lon":77.6279354,"lat":12.9331699,"precision":"30km","boost":2}]}}}}}"""
val searchSourceBuilder = SearchSourceBuilder().query(QueryBuilders.simpleQueryStringQuery(query))
val searchRequest = SearchRequest("bus_locations").source(searchSourceBuilder)
val searchResponse = restClient.search(searchRequest, RequestOptions.DEFAULT)
根据您的应用程序和您的需要,它可能会有所不同,通常取决于许多变量,例如碎片复制的数量或索引级别中的索引映射等,由于place弹性构建在Apache-Lucene上,一般情况下,叶查询或复合查询对于简单的使用具有更好的性能,但如果您需要复杂的结果,最好的方法是使用聚合。此外,如果您希望在应用程序级处理查询语法,最好的方法是使用字符串本机查询作为示例。如果您有spring boot应用程序,最好的方法是绑定并创建字符串查询,而不是使用默认存储库,请考虑下面的示例
@Query("{\"bool\":" +
"{\"must\" :" +
"[" + "" +
"{\"query_string\":{ \"query\" : \"?0\", \"fields\" : [ \"parentKnowledgeGroupId\" ] }}," +
"{\"query_string\":{ \"query\" : \"?1\", \"fields\" : [ \"knowledgeGroupId\" ]}}," +
"{\"query_string\":{ \"query\" : \"?2\", \"fields\" : [ \"content\" ]}}," +
"{\"query_string\":{ \"query\" : \"?3\", \"fields\" : [ \"courseType\" ]}}," +
"]" +
"}" +
"}")
ElasticModelSequence SearchCore(@Param("parentKnowledgeGroupId") String parentKnowledgeGroupId,
@Param("knowledgeGroupId") String knowledgeGroupId, @Param("term") String term,
@Param("courseType") ElasticModelSequence.CourseType courseType);
问题内容: 是否有适用于javascript的良好分析器?我知道firebug对分析代码提供了一些支持。但是我想确定更大范围的统计数据。想象一下,您正在构建大量的javascript代码,并且您想确定代码中实际上是什么瓶颈。首先,我想查看每个javascript函数和执行时间的配置文件统计信息。接下来将包括DOM函数。这与放慢速度的操作(如对渲染树的操作)相结合将是完美的。我认为,如果在我的代码,
示例: 对于文档: video1title=大海是蓝色的 video2title=狂野的大海 video3title=狂野的大海 video4title=海边随便什么 null null 现在,AFAIKS,没有真正的方法告诉Lucene“找到word1和word2等位于位置1和2和3等的文档。” 有一些“变通办法”可以模拟这种行为: > 对字段进行两次索引。在中,您将单词标记化(可能使用),在中
我有一个超时执行任务的方法。我使用ExecutorServer.submit()获取一个Future对象,然后调用future.get()并超时。这很好,但是我的问题是处理我的任务可能抛出的检查异常的最好方法。下面的代码工作正常,并且保留了被检查的异常,但是如果方法签名中被检查的异常的列表改变了,它看起来非常笨拙并且容易出错。 关于如何解决这个问题的任何建议?我需要以Java 5为目标,但我也很好
问题内容: 我最近为我在iOS中开发的iOS应用程序实现了AWS开发工具包。我已经连接到数据库实例并能够获得查询响应,但是,我正在努力将其转换为可用数据。我对Swift,AWS和编程一般还是比较陌生,因此可能缺少明显的东西! 我的代码如下: 控制台输出为: 对象:[{area =“ {\ n S = \” West Hampstead \“; \ n}”; name =“ {\ n S = \”
我遇到了一个问题。我的网页有一个控件。值更改后(通过选择不同的值),页面将刷新并呈现内容。 下面是我的代码: 第二部分:
问题内容: 用jQuery删除表行的最佳方法是什么? 问题答案: 你是对的: 如果您的行中包含,则此方法很好用,例如: 如果没有,则可以使用jQuery的大量选择器中的任何一个。