我正在使用 Lucene 在数据集中进行搜索,我现在需要如何实现“”搜索(我的意思是精确短语搜索)机制?
我想让它能够在用户输入“littlecat”时产生所有“little cat”命中。我现在应该操作索引代码,但至少我现在应该“”搜索如何工作。
我正在使用 Lucene 在数据集中进行搜索,我现在需要如何实现“”搜索(我的意思是精确短语搜索)机制?
我想让它能够在用户输入“littlecat”时产生所有“little cat”命中。我现在应该操作索引代码,但至少我现在应该“”搜索如何工作。
实现这一点的一种方法是动态编程- 使用字典/语料库将您的单个单词与(以及将文本解析为字符串后剩余的单词进行比较)。
把它想象成你正在编写一个自定义拼写检查器或类似的东西。在这种情况下,还有一种情况,可能会留下多个单词组合,例如- “walkingmydoginrain” -在这里您可以将第一个单词分解为“walk”或“walking”,这就是DP的美妙之处-因为您(从您的语料库中)知道您不能从“ingmydoginrain”(即字符串的其余部分)中形成合法的单词——您刚刚发现在这种情况下——您应该选择分段词作为“Walking”而不是 walk。
还可以将其视为无法找到匹配项正在添加到您定义的COST 函数中,因此您应该获得最佳结果 - 这意味着您可以确定您的文本(未用空格分隔)肯定会被破坏成合法的单词-尽管该行中可能有多个可能的单词序列(因此,寻求此内容的人的意图也可能)
您应该能够在网络上为您的用例找到相当不错的基本实现(另请阅读:Google 如何实现 - “您的意思是”)
现在,另请参阅 - 如何将没有空格的文本拆分为单词列表?
我想让它能够在用户输入“littlecat”时产生所有“little cat”命中
这听起来很容易,但实施起来却非常困难。对于人类来说 little 和 cat 是两个不同的词,但对于计算机来说,它不知道 little 和 cat 与littlecat分开,除非你有字典并且你的代码检查字典中的这两个词。另一方面,搜索“小猫”也可以轻松搜索“小猫”。而且我相信这超出了精确短语搜索的概念。如果您搜索“ littlecat ”,则精确短语搜索只会返回 littlecat ,反之亦然。即使谷歌看似(预期也是),在 littlecat 搜索中也不返回“小猫”