Lucene:检测缺失空间

Lucene:检测缺失空间,lucene,search-engine,lucene.net,Lucene,Search Engine,Lucene.net,我正在用Lucene.net编写一个搜索引擎,搜索大约200万种产品的数据库。我正在使用雪球分析器,到目前为止,我对其性能和结果集印象深刻 我似乎无法克服的一个问题是检测搜索输入中缺少的空格 例如: 用户正在寻找“黑钻石”品牌产品,但他们在搜索“黑钻石”。 因为雪球分析器为黑钻石创建了两个独立的标记,所以我得到了0结果 我可以采取什么方法来纠正此问题?我已经仔细研究了木瓦分析仪(n-gram),但不确定这是否有用 是否可以将木瓦分析仪与拼写检查器结合使用(这是一种有效的解决方案)?如果我能用一个

我正在用Lucene.net编写一个搜索引擎,搜索大约200万种产品的数据库。我正在使用
雪球分析器
,到目前为止,我对其性能和结果集印象深刻

我似乎无法克服的一个问题是检测搜索输入中缺少的空格

例如:

用户正在寻找“黑钻石”品牌产品,但他们在搜索“黑钻石”。

因为雪球分析器为黑钻石创建了两个独立的
标记
,所以我得到了0结果

我可以采取什么方法来纠正此问题?我已经仔细研究了
木瓦分析仪(n-gram),但不确定这是否有用


是否可以将
木瓦分析仪
拼写检查器
结合使用(这是一种有效的解决方案)?如果我能用一个提示人们你是说:“黑钻石”吗?当出现这种情况时,可以这样做。

如果没有结果(或分数低于某个阈值),那么最初按原样运行用户查询如何,再运行N次搜索(其中N是将单词一分为二的可能性数)显示获得最高分数的可能性的用户结果。

最初按原样运行用户查询如何,如果没有结果(或分数低于某个阈值),则运行N个附加搜索(其中N是将单词一分为二的可能性数)显示获得最高分数的可能性的用户结果。

请查看lucene 4.0 WordBreakSpellChecker。如果它很容易移植,那将是一个简单的解决方案。我会试试看。我打赌它对4.0 tho有其他依赖。我正在运行3.0,但也许我可以复制这个概念。感谢大家关注lucene 4.0 WordBreakSpellChecker。如果它很容易移植,那将是一个简单的解决方案。我会试试看。我打赌它对4.0 tho有其他依赖。我正在运行3.0,但也许我可以复制这个概念。谢谢,我认为这不会很好,主要是因为数据集非常大。如果我理解正确的话,你说要把这个词在每个可能的索引上分开。因此,第一次迭代将产生标记:“b”和“lackdiamond”。它们的产品中只有一个字母b,因此返回的结果无效。我真的需要一种方法来为带有空格的短语创建一个标记并与之匹配。我想运行'b'和'lackdiamond'很可能不会返回任何结果,而'black'和'diamond'选项的第五次迭代预计会返回结果。但是谁说你想把用户限制在一个连接词开始,所以我想我的建议是一个更平庸的黑客,以防你不想投资一个专门的拼写检查解决方案。我被纠正了。谢谢。我认为这不太好,主要是因为数据集太大了。如果我理解正确的话,你说要把这个词在每个可能的索引上分开。因此,第一次迭代将产生标记:“b”和“lackdiamond”。它们的产品中只有一个字母b,因此返回的结果无效。我真的需要一种方法来为带有空格的短语创建一个标记并与之匹配。我想运行'b'和'lackdiamond'很可能不会返回任何结果,而'black'和'diamond'选项的第五次迭代预计会返回结果。但是谁说你想把用户限制在一个连接词开始,所以我想我的建议是一个更平庸的黑客,以防你不想投资一个专门的拼写检查解决方案。我被纠正了。谢谢