c# - LUCENE.NET-如何修复在 C# 中生成的查询(更多的 4 个子句“OR”和多字段)
问题描述
在搜索和多字段中构建包含 4 个以上子句的查询。
查询生成
{(tittle:g?s* body:g?s* url:g?s*) (tittle:ge?* body:ge?* url:ge?*) (tittle:esg* body:esg* url:esg*) (tittle:esj* body:esj* url:esj*) (tittle:esy* body:esy* url:esy*)}
代码
var a = new StandardAnalyzer(Lucene.Net.Util.Version.LUCENE_30);
var MulField = new MultiFieldQueryParser(Lucene.Net.Util.Version.LUCENE_30, fields, a);
BooleanQuery BooleanBuild = new BooleanQuery();
foreach (string t in g.terms)
{
BooleanBuild.Add(MulField.Parse(t+"*"), Occur.SHOULD);
}
TopDocs topDocs = searcher.Search(BooleanBuild, cnf.limitd);
/*REGEX
var rq=new RegexQuery(new Term("tittle",@"(j|g|y)h?eh?sh?uh?s(\w)*"));
TopDocs topDocs = searcher.Search(rq, cnf.limitd);
*/
List<ObjJSON> docs = new List<ObjJSON>(cnf.limit);
数据输出
但还有 4 个条款
询问
{(tittle:gesus* body:gesus* url:gesus*) (tittle:gésus* body:gésus* url:gésus*) (tittle:gehsus* body:gehsus* url:gehsus*) (tittle:ghesus* body:ghesus* url:ghesus*) (tittle:géhsus* body:géhsus* url:géhsus*) (tittle:ghésus* body:ghésus* url:ghésus*) (tittle:gesus* body:gesus* url:gesus*) (tittle:gesús* body:gesús* url:gesús*) (tittle:gesuhs* body:gesuhs* url:gesuhs*) (tittle:geshus* body:geshus* url:geshus*) (tittle:gesúhs* body:gesúhs* url:gesúhs*) (tittle:geshús* body:geshús* url:geshús*) (tittle:gesus* body:gesus* url:gesus*) (tittle:gezuz* body:gezuz* url:gezuz*) (tittle:gesus* body:gesus* url:gesus*) (tittle:jesus* body:jesus* url:jesus*) (tittle:yesus* body:yesus* url:yesus*)}
输出数据
注意:仅执行查询中的 4 个第一个子句。
坦克寻求帮助,对不起我的英语。
解决方案
错误是max number class
查询中的数字和类型,使用Multi Field Query
whit 覆盖new string [] {}
接受 Lucene 格式的原始查询
推荐阅读
- regex - 如何定义正则表达式“密码”:“[123456]”进行屏蔽
- python - 导入错误:来自 . import postgresql, mysql, sqlite, mssql, oracle # pragma: no cover ImportError: cannot import name 'mysql'
- google-apps-script - 在文件夹中按名称打开文件并获取范围 A:N 中的值
- reactjs - ReactJS 中组件文件的导入错误
- google-apps-script - 如果没有可用的“返回”,Google Apps 脚本 .getMonth 将不起作用
- python - 在列中的字符串中查找匹配项
- apache-spark - Spark SQL,是否可以编写一个可以解析 JAVA_OBJECT 类型并将其转换为 StructType 的 JdbcDialect?
- c++ - std::function 对象的 C++ 映射抛出“未能专门化函数模板”错误
- mysql - mysql2 0x0000000000000000 处的分段错误
- node.js - 纱线启动命令失败,退出代码为 1