📄 fuzzyquerytest.cs
字号:
using Lucene.Net.Analysis;
using Lucene.Net.Documents;
using Lucene.Net.Index;
using Lucene.Net.QueryParsers;
using Lucene.Net.Search;
using Lucene.Net.Store;
using NUnit.Framework;
namespace dotLucene.inAction.BasicSearch
{
[TestFixture]
public class FuzzyQueryTest
{
private Directory directory;
private IndexSearcher searcher;
[SetUp]
public void Init()
{
directory = new RAMDirectory();
IndexSingleFieldDocs(new Field[]
{
Field.Text("contents", "fuzzy"),
Field.Text("contents", "wuzzy")
});
searcher = new IndexSearcher(directory);
}
private void IndexSingleFieldDocs(Field[] fields)
{
IndexWriter writer = new IndexWriter(directory, new WhitespaceAnalyzer(), true);
for (int i = 0; i < fields.Length; i++)
{
Document doc = new Document();
doc.Add(fields[i]);
writer.AddDocument(doc);
}
writer.Optimize();
writer.Close();
}
[Test]
public void Fuzzy()
{
Query query = new FuzzyQuery(new Term("contents", "wuzza"));
Hits hits = searcher.Search(query);
Assert.AreEqual( 2, hits.Length(),"both close enough");
Assert.IsTrue(hits.Score(0) != hits.Score(1),"wuzzy closer than fuzzy");
Assert.AreEqual("wuzzy", hits.Doc(0).Get("contents"),"wuzza bear");
}
[Test]
public void TestQueryParser()
{
Query query =QueryParser.Parse("wuzza~","contents",new SimpleAnalyzer());
Hits hits = searcher.Search(query);
Assert.AreEqual( 2, hits.Length(),"both close enough");
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -