繁体   English   中英

Lucene.net-在短语中搜索词

[英]Lucene.net - Search for terms within a phrase

我创建了这样的索引:

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',然后返回文档'foo'
  • “我是测试”应该什么也不会返回
  • “我是测试123”返回“测试123”

在不包含任何空格的短语中搜索“ foo”之类的单个元素可以正常工作。 但是,当该短语包含空格时,我在努力。 “我是测试123”和“测试123”均未返回任何内容。

我怀疑它可能来自于分析器,因此我尝试了StandardAnalyzer和KeywordAnalyzer,但问题仍然存在。 任何帮助,将不胜感激。

当我搜索字符串时,我会这样做:

var searchString =“我是foo”; var searchTerms = searchString.Split('');

该查询将看起来像:

+(name:i name:am name:foo) name:"I am foo"

解释:+在查询之前,必须先有一个词才可以匹配。 我逐个搜索每个词,更多匹配项=希格勒比分我也搜索搜索字符串作为短语,因为那样我就可以确保,如果它是直接匹配项,它将获得最高分。

您甚至可以使用Fuzzy和Wildcard进行搜索,因此覆盖范围很广,但仍然可以在顶部获得最佳结果。

希望能帮助到你。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM