lucene - 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 执行这种类型的搜索?
谢谢!
解决方案
推荐阅读
- python - 类型错误:check_is_fitted() 缺少 1 个必需的位置参数:“属性”
- python - 如何从相同长度的csv中制作2列
- javascript - Dynamics CRM - 如果帐户类型为“potential_client”,则锁定联系人字段
- javascript - 将纯文本文件转换为 JSON
- angular - 在 Angular 中渲染 Power BI 仪表板
- java - 如何在定义后立即按顺序重用代码?
- python - 创建本地 python pip repo
- eclipse - Spring boot 应用程序,从 jar 到 war,使用 ActiveJDBC 模型,Wildfly 无法识别我的模型(如 Person、Disease、Location .....),我错了什么?
- reactjs - 关于 Redux-thunk,如果一个 handler 派发一个要调用的函数,为什么不直接调用呢?
- hdfs - 如何在 HDFS 中压缩文件夹?