Solr JSON输出从数组到字符串

时间:2019-01-31 21:21:57

标签: json solr

这是我通过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},
      {

您可以看到ProblemSolution都作为数组输出。这导致了我项目中的其他问题。我相信这是因为我的架构是如何设置的。

ProblemSolution都被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我是一个新的编码器,如果您对我的问题有疑问,或者认为我可以提供更多信息或我尝试过的例子,请尝试使我的问题对其他初学者有利。在将我的问题提交到这里之前,真的要进行足够的研究。

1 个答案:

答案 0 :(得分:2)

如果在架构定义中发现您有multiValued="true"

将其更改为'false'应该会阻止您的字段成为数组。

自然,一旦更改了架构,就需要重新索引搜索索引中已经存在的数据。