这是我的问题:我有一个由SOLR索引的文本字段,它是我们数据库中的用户名。我希望搜索模糊,而不是完全匹配。例如;如果用户名是“krishnarayaprolu”并且我搜索拼写错误“krishnIrayaprolu”,它仍然应该返回记录。
这对我来说很好用,除非用户名中有空格。所以用户名:“krishna rayaprolu”和搜索字符串“krishnI rayaprolu~0.5”没有返回记录。如果拼写错误在最后,如“krishna rayaprolI~0.5”,则返回正常。有什么想法吗?
对于我的配置,我尝试了WhiteSpaceTokenizerFactory和StandardTokenizerFactory。在搜索方面,我尝试了引用并逃避了空间。他们都没有帮我解决我的空间+模糊问题。我正在使用管理界面进行搜索。感谢任何指针。
答案 0 :(得分:0)
我有解决您问题的方法,只需要在架构中添加一些字段即可。
创建新的ngram字段并将所有标题名称复制到ngram字段中。
当您对拼写错误的单词进行任何查询时,您得到的结果为空,然后拆分 这个单词并再次触发相同的查询,您将获得预期的结果。
Example : Suppose user searching for word "krishna rayaprolu" but type it as "krishnI rayaprolu~0.5", then
create query in below way you will get results as expected hopefully.
**(ngram:"krishnI rayaprolu~0.5" OR ngram:"kri" OR ngram:"kris" OR ngram:"krish" OR ngram:"krishn" OR ngram:"krishnI" OR ngram:"ray" OR ngram:"raya" OR ngram:"rayap" ..... )**
我们已按顺序拆分了单词序列,并在字段ngram上进行了查询。
希望它会对您有所帮助。