- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
传递给搜索的字符串 i
是 (Experience:[1 TO 5])
,它在其中搜索所有数字,如 15、25、21、51 等。我需要在数字 1 和 5 之间搜索,
using Lucene.Net.Store;
var results = new List<SearchResults>();
// Specify the location where the index files are stored
string indexFileLocation = @"G:\Lucene.Net\Data\Document";
var dir = Lucene.Net.Store.FSDirectory.GetDirectory(indexFileLocation);
var reader = IndexReader.Open(dir);
var searcher = new IndexSearcher(reader);
var analyzer = new StandardAnalyzer();
var queryParser = new QueryParser("Prof_ID", analyzer);
// <default field> is the field that QueryParser will search if you don't
string special = "";
if (!txtkeyword.Text.Equals(""))
{
special = special + "(Experience:[1 TO 5])";
}
var hits = searcher.Search(queryParser.Parse(special));
// Getting result to the list
for (int i = 0; i < hits.Length(); i++)
{
SearchResults result = new SearchResults();
result.Skillsummarry = hits.Doc(i).GetField("JS_Skill_Summary").StringValue();
result.Experience = hits.Doc(i).GetField("Experience").StringValue();
result.Profile_Id = hits.Doc(i).GetField("Prof_ID").StringValue();
results.Add(result);
}
GridView1.DataSource = results;
GridView1.DataBind();
最佳答案
要进行范围类型的查询,您应该这样做,
var query = new TermRangeQuery(
"Experience",
"1",
"5",
includeLower: true,
includeUpper: true);
但是,如果您将数字存储为 string
,这可能会返回错误的范围,因为它进行的是字符串比较,而不是数字比较;因此 "5"> "15"
是 true
,而不是相反。
要进行数字范围类型的查询,
var query =
NumericRangeQuery.NewDoubleRange(
"Experience",
1,
5,
includeLower: true,
includeUpper: true);
但是,您需要确保在索引文档时将 Experience
字段存储为数字字段而不是标准字段,
var field =
new NumericField("Experience", Field.Store.YES, true)
.SetDoubleValue(15, 25, 21, 51, etc. );
在将其添加到您的 Lucene 文档之前。
关于c# - 为什么 Lucene 数字范围搜索不起作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17358687/
今天有小伙伴给我留言问到,try{...}catch(){...}是什么意思?它用来干什么? 简单的说 他们是用来捕获异常的 下面我们通过一个例子来详细讲解下
我正在努力提高网站的可访问性,但我不知道如何在页脚中标记社交媒体链接列表。这些链接指向我在 facecook、twitter 等上的帐户。我不想用 role="navigation" 标记这些链接,因
说现在是 6 点,我有一个 Timer 并在 10 点安排了一个 TimerTask。之后,System DateTime 被其他服务(例如 ntp)调整为 9 点钟。我仍然希望我的 TimerTas
就目前而言,这个问题不适合我们的问答形式。我们希望答案得到事实、引用资料或专业知识的支持,但这个问题可能会引发辩论、争论、投票或扩展讨论。如果您觉得这个问题可以改进并可能重新打开,visit the
我就废话不多说了,大家还是直接看代码吧~ ? 1
Maven系列1 1.什么是Maven? Maven是一个项目管理工具,它包含了一个对象模型。一组标准集合,一个依赖管理系统。和用来运行定义在生命周期阶段中插件目标和逻辑。 核心功能 Mav
我是一名优秀的程序员,十分优秀!