lunr:返回搜索词的词干,这样我就可以在结果中突出显示它
lunr: Return the stem of the searched terms so I can highlight it within results
我正在使用lunr执行搜索,目前我正在从搜索文本区域的值中突出显示搜索,但lunr使用词干分析器并返回与完整搜索项不匹配的结果。有没有一种方法可以访问lunr最终搜索的搜索词的词干?
// query our lunr index
searchResults = _.map(index.search($('#searchInput').val()), function (res) {
var uid = res.ref;
return mediaList[uid];
});
lunr使用的默认词干分析器在lunr.stemmer
中可用作函数
你可以用任何你想阻止的代币来称呼它,例如
lunr.stemmer("stemming") //= "stem"
然而,我认为这不会帮助你实现你想要的,因为你正在搜索的文档中的标记也已经被词干了,而词干是一种单向操作。例如,在上面的例子中,你不知道还有哪些单词会被词干改为"词干",因此可能会错过一些需要强调的术语。
解决方法可能是保留自己的反向词干查找,这样以后就可以更容易地在输出中匹配结果搜索项。这可以通过在索引中插入自定义管道函数来实现:
// going to store a hash of stemmed word to list of original words
var reverseStem = {}
var reverseStemIndexBuilder = function (token) {
var stemmed = lunr.stemmer(token)
if (stemmed in reverseStem) {
reverseStem[stemmed].push(token)
} else {
reverseStem[stemmed] = [token]
}
return stemmed
}
// idx is your instance of a lunr index
// we can remove the existing stemmer since reverseStemIndexBuilder already returns a stemmed token
idx.pipeline.remove(lunr.stemmer)
idx.pipeline.add(reverseStemIndexBuilder)
现在,您可以查找词干可能来自的所有标记,然后在结果中找到它们,并相应地突出显示它们。
相关文章:
- 有没有一个抽象层,这样我就可以集成一次,然后使用pusher、pubnub或faye
- 只要用户将鼠标悬停在jQuery中的某个元素上,就可以执行多次单击
- AngularJS在不使用变量的情况下将服务注入模块中,这样就可以缩小它
- 如何绑定到这个,这样我就可以在这个coffeescript中正确地调用React中的setState
- 如何通过知道节点的值来访问dom&&只要知道价值就可以得到手风琴的索引
- 如何用程序读取和解析gruntfile,这样我就可以修改它并再次保存
- setTimeout()是如何实现的,这样它就可以在不阻塞主线程的情况下跟踪经过的时间
- JQuery动画打断了脚本,但如果没有它,脚本就可以工作
- 如果我在其中使用alert,Javascript代码就可以工作,否则它'It’不起作用
- 在输入字段上使用它-can'我不能从函数中取出变量,这样我就可以使用它了
- lunr:返回搜索词的词干,这样我就可以在结果中突出显示它
- 如何只需一次调用就可以将对象数组保存到mongoose DB中
- Hapi.js文件上传我如何获取文件,这样我就可以在上面使用imageMagick命令行工具
- 我怎么能"保存“;变量客户端,这样我就可以在其他java脚本事件中使用它
- 如何使搜索栏中的结果列表可以通过向上/向下箭头进行导航
- 通过小部件设置第三方cookie,这样我以后就可以识别用户了
- 如何更改当前打开的链接的文本颜色,并保持未打开链接的默认颜色?这样用户就可以知道他现在在哪个链接上
- 将值从一个html表单移动到另一个,这样一个表单就可以提交自己和另一个表单的值
- 2 pdf'It’点击一下网站就可以打开了
- 将和.html(墙帖)加载到不同的页面(这样我就可以在所有想要添加的页面中都有墙帖),使用angular