我的solr架构中有以下两个字段:
<field name="brand_id" type="string" indexed="true" stored="true" />
<field name="category_id" type="string" indexed="true" stored="true" />
Run Code Online (Sandbox Code Playgroud)
当我提出启用了facet的请求时(在brand_id上进行分面) http://example.com/solr/select?wt=json&facet=true&facet.mincount=1&facet.field=brand_id&q=*:*
faceting输出以对象表示法返回:
"facet_counts": {
"facet_queries": { }
"facet_fields": {
"brand_id": [
{"1350492":14},
{"1350578":12},
{"1350600":11},
{"1350617":8}
]
}
}
Run Code Online (Sandbox Code Playgroud)
但是,使用'category_id'作为构面字段重复相同的请求会返回数组符号 http://example.com/solr/select?wt=json&facet=true&facet.mincount=1&facet.field=category_id&q=*:*
"facet_counts":{
"facet_queries":{},
"facet_fields":{
"category_id":[
"230",20,
"259",13,
"154",12,
"249",11
]
}
}
Run Code Online (Sandbox Code Playgroud)
有没有办法强制对象符号格式化?我正在使用Solr 3.6
- 更新 -
使用XML格式返回正确的结果:
<lst name="facet_counts">
<lst name="facet_queries"/>
<lst name="facet_fields">
<lst name="brand_id">
<int name="269115">136</int>
<int name="269394">110</int>
</lst>
<lst name="category_id">
<int name="1348814">228</int>
<int name="1350591">218</int>
</lst>
Run Code Online (Sandbox Code Playgroud) 每当我创建一个jQuery.ajax
请求时,它都可以在URL使用HTTP协议时正常工作.但是当我向HTTPs服务器发送相同的请求时,它会在没有标题[ HTTP_X_REQUESTED_WITH: XMLHttpRequest
]的情况下发送.因此服务器无法知道这是一个AJAX请求!
我试过了:
beforeSend
CrossDomain:true
注意:没有跨域问题,请求有效并处理,但不是AJAX.
当前URL为http但请求的URL位于同一域但使用HTTPS时,会发生此问题. http://example.com/home 将使用AJAX POST发布到
我正在尝试对存储的值(而不是查询值)执行精确匹配。
我的索引数据类似于:“香蕉共和国”
我需要以下查询来匹配:
这些应该不匹配:
我的场景实际上很简单,并且可以使用类似于以下的查询的 SQL 轻松实现:query_string LIKE '%stored_val%'
但我无法配置分析器来执行它。我确信EdgeNGramFilter
可以实现这一点,但是创建长度超过 30 个字符的 ngram 会非常昂贵。
我当前的实现是:在索引分析器中,使用solr.KeywordTokenizerFactory
. 在查询分析器中,使用solr.ShingleFilterFactory
(2-4 个标记)。使用分析工具时一切正常。但是使用查询 API,查询被转换为:
rawquerystring: "match_name:"banana republic"",
parsedquery_toString: "match_name:"(banana bananarepublic) republic""
Run Code Online (Sandbox Code Playgroud)
这与我存储的令牌“bananarepublic”不匹配
我的分析链如下所示:
<fieldType name="singletoken" class="solr.TextField">
<analyzer type="index">
<charFilter class="solr.MappingCharFilterFactory" mapping="../../common-config/mapping-ISOLatin1Accent.txt"/> <!-- map accented letters to their ascii equivilants -->
<tokenizer class="solr.KeywordTokenizerFactory"/>
<filter class="solr.LowerCaseFilterFactory" />
<filter class="solr.PatternReplaceFilterFactory" pattern="[^A-Za-z0-9& ]" replacement=" "/>
<filter class="solr.PatternReplaceFilterFactory" pattern="(^\s+|\s+$)" replacement=""/> <!-- …
Run Code Online (Sandbox Code Playgroud) 我有一个在AWS 的 Route53中注册的域名,并且希望创建一个指向 EC2 实例的子域,该子域在重新启动计算机后仍保持不变(这种情况经常发生)。
1.1.1.1
)subdomain.example.com
是一个A
指向的记录1.1.1.1
2.2.2.2
和ec2-2-2-2-2.eu-west-1.compute.amazonaws.com
)subdomain.example.com
是一个CNAME
指向的记录ec2-2-2-2-2.eu-west-1.compute.amazonaws.com
subdomain.example.com
到负载均衡器CNAME
所以我曾经用#!/bin/bash -e
(调用bash,并在第一个错误时退出)来启动我的bash脚本
现在我正在转向更便携的形式 #!/usr/bin/env bash
但设置-e
不起作用
#!/usr/bin/env bash -e\necho 'hi'\n\n# output:\n>> /usr/bin/env: \xe2\x80\x98bash -e\xe2\x80\x99: No such file or directory\n
Run Code Online (Sandbox Code Playgroud)\n\n如何-e
与便携式 Shebang 一起使用?