邻近搜索示例Lucene.Net

时间:2011-04-13 00:38:46

标签: c# .net lucene.net

我想用Lucene.Net制作一个Proximity Search。我看到this question看起来这就是他的答案,但没有提供任何代码。 Java文档说使用〜字符和中间的单词数,但是我看不到这个字符在代码中的位置。有人可以给我一个使用Lucene.Net进行邻近搜索的例子吗?

修改

到目前为止我所拥有的:

IndexSearcher searcher = new IndexSearcher(this.Directory, true);

string[] fieldList = new string[] { "Name", "Description" };

List<BooleanClause.Occur> occurs = new List<BooleanClause.Occur>();
foreach (string field in fieldList)
{
     occurs.Add(BooleanClause.Occur.SHOULD);
}


Query searchQuery = MultiFieldQueryParser.Parse(this.LuceneVersion, query, fieldList, occurs.ToArray(), this.Analyzer);

如果我尝试在MultiFieldQueryParser上添加带有任何数字的“〜”,则会错误地说,对于FuzzySearch,值应介于0.0和1.0之间,但我想要一个Proximity Search 3个分离单词Ex。 “我的搜索”~3

2 个答案:

答案 0 :(得分:8)

如果您在单个字词上应用,则代字号表示fuzzy search;如果您将其应用于短语,则表示proximity search。您收到的错误听起来就像您在一个词(术语~10)上应用它而不是使用短语(“术语术语”~10)。

  

要进行邻近搜索,请使用 a Phrase 末尾的波浪号“〜”符号。

答案 1 :(得分:1)

Lucene.NET和同一版本的经典java lucene之间的唯一区别应该是内部的,而不是外部的 - 操作目标是拥有一个非常兼容的项目,特别是在输入(查询)和输出(索引文件)方面。所以它应该工作,但它适用于java lucene。如果没有,那就是一个错误。