我创建了一个像这样的索引:
var doc = new Document();
doc.Add(new Field("id", product.Id.ToString(), Field.Store.YES, Field.Index.NO));
doc.Add(new Field("name", product.Label, Field.Store.NO, Field.Index.NOT_ANALYZED));
writer.AddDocument(doc);
我想要完成的是搜索短语中任何术语的完全匹配。比方说,我的索引包含2个文档('test 123','foo')
如果我输入如下的短语:
在不包含任何空格的短语中搜索像'foo'这样的单个元素正常工作。 但是当这个短语包含一个空白区域时,我正在努力。 “我是测试123”和“测试123”一样没有任何回报。
我怀疑它可能来自anylizer,所以我尝试了StandardAnalyzer以及KeywordAnalyzer,但问题仍然存在。任何帮助将不胜感激。
答案 0 :(得分:0)
当我用字符串搜索时,我会这样做:
var searchString ="我是foo&#34 ;; var searchTerms = searchString.Split('');
查询看起来像是:
+(name:i name:am name:foo) name:"I am foo"
解释: +在查询之前意味着,在匹配之前,其中一个术语需要存在。 我个别搜索每个词,更多匹配=更高的分数 我也搜索searchString作为一个prase,因为那时我确保如果它是直接匹配,它将获得最高分。
您甚至可以使用模糊和通配符进行搜索,因此您可以达到非常宽的范围,但仍然可以在顶部获得最佳效果。
希望它有所帮助。