C#查找搜索结果显示的相关文档片段
在开发搜索我正在构建的网站时,我决定采用廉价而快捷的方式使用Microsoft Sql Server的全文搜索引擎,而不是像Lucene.Net那样更强大的东西。
不过,我希望拥有的功能之一是google-esque相关文档片段。我很快发现确定“相关”片段比我意识到的更难。
我想根据找到的文本中的搜索词密度选择片段。所以,基本上,我需要在文本中找到最密集的搜索词。通道是一些任意数量的字符(比如200 - 但它确实无关紧要)。
我的第一个想法是在循环中使用.IndexOf()并构建一个术语距离数组(从先前找到的术语中减去找到的术语的索引),然后......什么?将任意两个,任意三个,任意四个,任何五个顺序数组元素相加,并使用具有最小和的那个(因此,搜索项之间的最小距离)。
这看起来很混乱。
有没有一种既定的,更好的,更明显的方式来做到这一点,而不是我想出来的?
没有找到相关结果
已邀请:
7 个回复
拟蓬
告耸
该函数将查找示例文本中所有关键字的索引
它的执行有点笨拙。它的工作方式是找到字符串中所有关键字的位置。然后检查没有关键字彼此之间的距离比所需的片段长度更近,这样片段就不会重叠(这就是它有点不合适......)。然后抓住以关键字位置为中心的所需长度的子串,并将整个事物拼接在一起。 我知道这已经晚了几年,但发布以防万一它可能会帮助有人遇到这个问题。
亲奋漏
畦桨存灯
例: 突出显示“光学流动被定义为图像中结构光的变化,例如视网膜或相机的传感器,由于眼球或相机与场景之间的相对运动。文献中的进一步定义突出了光学流动的不同特性“”光流“ 输出: [[HIGHLIGHT]]光学流[[ENDHIGHLIGHT]]定义为结构化的变化 图像中的光,e ...文献中的进一步定义突出了差异 [[HIGHLIGHT]]光流[[ENDHIGHLIGHT]]的特性
搁手
我能想到的一些改进是返回多个“片段”,其长度更短,加上更长的长度 - 这样就可以对文档的多个部分进行采样。
臀博
赣借
即可。这样做的好处是你知道片段是从开始/结束/中间获取的,所以你可以添加一些装饰,如
,如果你希望在片段开始/结束。 性能 设置为
的
将找到最佳片段,但一次将窗口移动1个字符。将此值设置得更高可加快执行速度。 调整 你可以随心所欲地锻炼
。在这个例子中,我已经完成了
以支持更长的单词。
你可以添加更多,例如,你可能想尝试比较
,你的权重soundex匹配少于完全匹配。