Длина поля Всегда = 1 - PullRequest
       1

Длина поля Всегда = 1

0 голосов
/ 30 января 2019

После обучения Reuters Ajax Solr У меня проблема с получением длины полей.Проблема связана с «шаблоном», но я думаю, что это может быть связано с другим файлом js.

ОБУЧЕНИЕ «ШАБЛОН»

template: function (doc) {
    var snippet = '';
    if (doc.text.length > 300) {
      snippet += doc.dateline + ' ' + doc.text.substring(0, 300);
      snippet += '<span style="display:none;">' + doc.text.substring(300);
      snippet += '</span> <a href="#" class="more">more</a>';
    }
    else {
      snippet += doc.dateline + ' ' + doc.text;
    }

    var output = '<div><h2>' + doc.title + '</h2>';
    output += '<p id="links_' + doc.id + '" class="links"></p>';
    output += '<p>' + snippet + '</p></div>';
    return output;
  },

МОЙ «ШАБЛОН»

template: function (doc) {
    var snippet = '';
    if (doc.Solution.length > 200) {
            snippet += doc.Solution.substring(0, 200) + ' ' + doc.date;
            snippet += '<span style="display:none;">' + doc.Solution.substring(200);
            snippet += '</span> <a href="#" class="more">more</a>';
    }
    else {
        snippet += doc.Solution.length + '<br>' + doc.date + '';
    }
    var output = '<div><br><b>' + doc.Problem + '</b><br>';
    output += '' + snippet + '';
    output += ' ID #' + doc.id + '</div>';
    return output;
},

Предполагается, что в этом разделе предусмотрена кнопка «еще», если поле превышает определенную длину.С моим шаблоном это мой вывод:

output

Моё поле 'Solution' - это длинное текстовое поле, которое в моей схеме для solr (7.5) определено как text_general.

Я пробовал String() и .toString, но они тоже вызывали у меня проблемы.

Я очень плохо знаком с CS в целом, но кажется, что мое поле ведет себя как массив или логическое значение? В этом уроке у них есть более старая версия solr, но поле, в котором они получают длину, также является text_general.Я не совсем уверен, куда мне смотреть дальше.

PS: так устроен код в учебнике, мой друг был сбит с толку, потому что не все, похоже, лучшие практики.

Моя настройка отличается от учебной программы несколькими способами, я использую свою версию JQuery (v3.3.1), и они используют некоторые таблицы стилей, которых я не использую.

<head> изmy html doc:

    <title>Testing Solr</title>
    <meta charset="UTF-8">
    <!--style sheets and links in tutorial source code--
    <link rel="stylesheet" href="reuters.css">
    <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js"></script>
    <script src="http://ajax.googleapis.com/ajax/libs/jqueryui/1.8.24/jquery-ui.min.js"></script>
    <link rel="stylesheet" href="http://ajax.googleapis.com/ajax/libs/jqueryui/1.8.24/themes/smoothness/jquery-ui.css">
    <!--my downloaded copy of jquery-->
    <script src="script/jquery.js"></script>
    <!-- mentioned in tutorial -->
    <script src="script/our.js"></script>
    <script src="script/Core.js"></script>
    <script src="script/AbstractManager.js"></script>
    <script src="script/Manager.jquery.js"></script>
    <script src="script/Parameter.js"></script>
    <script src="script/ParameterStore.js"></script>
    <script src="script/AbstractWidget.js"></script>
    <script src="script/ResultWidget.js"></script>

Перешли на использование своих ссылок, отличных от reuters.css, по-прежнему отображая 1.

При использовании console.log(doc.Solution); это действительно действует как массив.

["solution to unlock    "]
0: "solution to unlock    "
length: 1
__proto__: Array(0)

Добавление console.log(doc.text); в ResultWidget.js руководства возвращает текст в консоль.Какова вероятная причина, по которой мое поле читается как массив, когда их поле читается как строка?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...