这是我通过solr ui执行查询时发生的情况。
{
"responseHeader":{
"status":0,
"QTime":1,
"params":{
"q":"*:*",
"_":"1548964207972"}},
"response":{"numFound":10,"start":0,"docs":[
{
"date":"2018-12-07T06:00:00Z",
"Problem":["unlock a user"],
"id":"1",
"Solution":["solution to unlock"],
"_version_":1624206363327463424},
{
"date":"2018-12-07T06:00:00Z",
"Problem":["unlock another user"],
"id":"2",
"Solution":["solution 2"],
"_version_":1624206363330609152},
{
您可以看到Problem
和Solution
都作为数组输出。这导致了我项目中的其他问题。我相信这是因为我的架构是如何设置的。
Problem
和Solution
都被text_general
索引,未存储。
我认为问题出在我的Solr模式上,因为数据库中的那些字段仅为文本utf8_unicode_ci
。以下是我的架构中text_general
的部分:
<fieldType name="text_general" class="solr.TextField" positionIncrementGap="100" multiValued="true">
<analyzer type="index">
<tokenizer class="solr.StandardTokenizerFactory"/>
<filter class="solr.StopFilterFactory" words="stopwords.txt" ignoreCase="true"/>
<filter class="solr.LowerCaseFilterFactory"/>
</analyzer>
<analyzer type="query">
<tokenizer class="solr.StandardTokenizerFactory"/>
<filter class="solr.StopFilterFactory" words="stopwords.txt" ignoreCase="true"/>
<filter class="solr.SynonymGraphFilterFactory" expand="true" ignoreCase="true" synonyms="synonyms.txt"/>
<filter class="solr.LowerCaseFilterFactory"/>
</analyzer>
一旦我的项目收到json输出,它就应该计算解决方案中的字符,因此我需要将输出作为文本。
编辑:使用solr在应用程序上使用console.log(Solution);
表示它是一个数组。
["solution 2"]0: "solution 2"length: 1__proto__: Array(0)
ToWhomItMayConcern我是一个新的编码器,如果您对我的问题有疑问,或者认为我可以提供更多信息或我尝试过的例子,请尝试使我的问题对其他初学者有利。在将我的问题提交到这里之前,真的要进行足够的研究。
答案 0 :(得分:2)
如果在架构定义中发现您有multiValued="true"
。
将其更改为'false'应该会阻止您的字段成为数组。
自然,一旦更改了架构,就需要重新索引搜索索引中已经存在的数据。