首页 > 解决方案 > MultiFieldQueryParser 模糊搜索

问题描述

我正在尝试实现一个模糊搜索,它采用像“Samsung Galaxy S7 tablet”这样的字符串并跨多个字段(类别、品牌、型号)进行搜索,但我无法设置模糊查询的敏感性。

以下代码

    var line = "Samsung Galaxy S7 tablet";
    Analyzer analyzer = new StandardAnalyzer(LuceneVersion.LUCENE_48);
    
    string[] searchfields = new string[] { "Category", "Brand", "Model" };

    var query = new BooleanQuery();
    var parser = new MultiFieldQueryParser(LuceneVersion.LUCENE_48, searchfields, analyzer);
    string[] terms = line.Split(new[] { " " }, StringSplitOptions.RemoveEmptyEntries);

    foreach (string term in terms)
    {
        var q = parser.Parse(term.Replace("~", "") + "~0.8");
        query.Add(q, Occur.MUST);
    }

总是产生类似的查询 +(Category:samsung~2 Brand:samsung~2 Model:samsung~2) +(Category:galaxy~2 Brand:galaxy~2 Model:galaxy~2) +(Category:s7~2 Brand:s7~2 Model:s7~2) +(Category:tablet~2 Brand:tablet~2 Model:tablet~2)

知道如何设置模糊查询的灵敏度。有没有更好的方法来使用 Lucene 执行这种类型的搜索?

谢谢!

标签: lucenelucene.net

解决方案


推荐阅读