После обучения 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;
},
Предполагается, что в этом разделе предусмотрена кнопка «еще», если поле превышает определенную длину.С моим шаблоном это мой вывод:

Моё поле '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 руководства возвращает текст в консоль.Какова вероятная причина, по которой мое поле читается как массив, когда их поле читается как строка?