想要使用完成建议程序构建电子商务网站的自动完成功能。
这是我的索引:
PUT myIndex
{
"mappings": {
"_doc" : {
"properties" : {
"suggest" : {
"type" : "completion"
},
"title" : {
"type": "keyword"
},
"category" : {
"type": "keyword"
},
"description" : {
"type": "keyword"
}
}
}
}
}
现在,当上传广告时,我希望标题字段用于自动完成,因此这就是我上传文档的方式:
POST dummy/_doc
{
"title": "Blue asics running shoes",
"category": "sports",
"description": "Nice blue running shoes, size 44 eu",
"suggest": {
"input": "Blue Asics running shoes" // <-- use title
}
}
问题是,通过这种方式,elasticsearch仅从开始就匹配字符串…即“ Blu”将找到结果,但“ Asic”或“ Run”或“ Sho”将不返回任何内容…
所以我需要做的是像这样标记我的输入:
POST dummy/_doc
{
"title": "Blue asics running shoes",
"category": "sports",
"description": "Nice blue running shoes, size 44 eu",
"suggest": {
"input": ["Blue", "Asics", "running", "shoes"] // <-- tokenized title
}
}
这会很好…但是我应该如何标记我的字段?我知道我可以在c#中拆分字符串,但是无论如何,我可以在Elasticsearch / Nest中做到这一点吗?
完成提示器设计用于使用分析器(而不是数据类型默认的分析器)快速按需搜索 前缀
查询。simple``standard``text
如果您需要标题中 所有 标记上的部分前缀匹配,而不仅仅是标题的开头,那么您可能需要考虑采用以下方法之一:
input
该completion
领域。标准分析仪可能是一个很好的起点。请记住,用于完成提示的数据结构在使用时会保存在内存中,因此文档中的高级基数会增加此数据结构的内存需求。还应考虑到匹配项的“计分”很简单,因为它是由应用于每个输入的权重控制的。
要么
title
为text
具有多个字段的数据类型,这些字段包括title
应分析(或不分析,keyword
例如,使用子字段)的不同方式。花一些时间使用Analyze
API来构建一个分析器,该分析器允许在标题中任何位置使用部分术语前缀。首先,诸如标准令牌生成器,小写令牌过滤器,Edgengram令牌过滤器以及可能的Stop令牌过滤器之类的工具将使您运行起来。还要注意,您希望搜索分析器执行与索引分析器类似的操作, 但 Edgengram令牌过滤器 除外
,因为无需对搜索输入中的令牌进行ngramming。
我正在尝试从 html 标签中提取字符串 我知道还有其他类似或甚至相同的问题得到了回答,但这些问题的答案似乎对我不起作用 此输出 不 注意,我使用了来自不同答案的其他正则表达式,得到了相同的结果,我也不熟悉正则表达式,所以这可能是一个无意义的问题。
我有一个长字符串列表,如下所示,我需要提取一个字符串子集并另存为新,列出每个长字符串中两个标记之间的字符。例如,我的两个字符串看起来像这样,使用“.power”作为标记,前面使用“.power”。 我需要提取每个长列表的子集,像这样在“。还有“.力量”- 我提取所有长字符串列表的代码(路径和文件名)如下所示:
问题内容: 我有一个文本文件,其中包含用’|’分隔的数据。我需要获取每个字段(以“ |”分隔)并对其进行处理。文本文件可以显示如下: ABC | DEF || FGHT 我正在使用字符串令牌生成器(JDK 1.4)来获取每个字段值。现在的问题是,我应该在DEF之后得到一个空字符串,但是我没有在DEF和FGHT之间得到空白。 我的结果应该是 -ABC,DEF,“”,FGHT, 但我正在获取 ABC,
问题内容: 我正在用Java 实现分流场算法,这是我的AP计算机科学课的一个附带项目。我已经用Javascript实现了一个简单的脚本,只带有基本的算术表达式(加法,减法,乘法,除法,求幂)。要将其拆分为数组,我要做的是找到每个运算符()以及数字和括号,然后在它们周围放置一个空格,然后将其拆分为数组。例如,将infix字符串制成,然后在空白处分割。 但是,我感觉这种方法非常慢,并且在您开始添加数学
问题内容: 假设我有一个字符串,而我只想提取一部分。 我只知道我感兴趣的部分之前和之后的几个字符1234。 使用字符串可以执行以下操作: 结果,这会给我。 如何在Python中做同样的事情? 问题答案: 使用正则表达式- 文档以供进一步参考 要么:
问题内容: 我希望能够对文本框中的输入字符串进行标记化以进行查询。示例:用户在文本框中输入“ abc xyz 123”。我想做这个: 谢谢。 问题答案: 使用一个字符串拆分函数,您可能会得到如下所示的内容: