在Reuters Ajax Solr tutorial之后,我遇到了获取字段长度的问题。 问题出在“模板”上,但我相信它可能源于另一个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;
},
如果字段超过一定长度,则本节应允许使用“更多”按钮。使用我的模板,这是我的输出:
我的“解决方案”字段是一个长文本字段,在我的solr(7.5)模式中定义为text_general。
我尝试过String()
和.toString
,但是这些问题也给我带来了麻烦。
从整体上来说,我对CS还是很陌生,但似乎我的字段表现为数组或布尔值?
在本教程中,他们拥有较旧的solr版本,但获得长度的字段也是text_general。我不确定我下一步应该去哪里。
PS:这是本教程中代码的结构方式,我的一个朋友很困惑,因为它似乎并不是最佳实践。
我的设置在某些方面与本教程有所不同,我使用的是我的JQuery版本(v3.3.1),它们使用的是我没有的样式表。
我的html文档的<head>
:
<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)
在教程的ResultWidget.js中添加console.log(doc.text);
会将纯文本返回到控制台。将其字段读取为字符串时,可能将我的字段读取为数组的可能原因是什么?