小编Din*_*ini的帖子

如何在Lucene.NET中索引和搜索Datetime字段?

我不知道如何索引和搜索Registred_Date(它包含sql格式的datetime).我需要在几年或几天之间搜索.我正在使用布尔查询进行搜索.下面的代码用于数字字段和普通现场索引.

       IndexWriter indexWriter = new IndexWriter(dir, new StandardAnalyzer(),Lucene.Net.Index.IndexWriter.MaxFieldLength.UNLIMITED);
        DataSet ds = new DataSet();
         //ds contains table
        if (ds.Tables[0] != null)
        {
            DataTable dt = ds.Tables[0];
            if (dt.Rows.Count > 0)
            {
                foreach (DataRow dr in dt.Rows)
                {
                    //Create the Document object
                    Document doc = new Document();

                    foreach (DataColumn dc in dt.Columns)
                    {
                        string check = dc.ToString();
                        if (check.Equals("Experience"))
                        {
                            int n=Convert.ToInt32(dr[dc.ColumnName]);
                            NumericField numericField = new NumericField(dc.ColumnName, Field.Store.YES, true);
                            numericField.SetIntValue(n);
                            doc.Add(numericField);
                        }
                      else if(check.Equals("Registred_Date"))
                        {

                         }
                        else
                        {
                            doc.Add(new Field(dc.ColumnName, dr[dc.ColumnName].ToString(), Field.Store.YES, …
Run Code Online (Sandbox Code Playgroud)

c# lucene lucene.net

8
推荐指数
1
解决办法
5155
查看次数

为什么Lucene数值范围搜索不起作用?

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 …
Run Code Online (Sandbox Code Playgroud)

c# lucene.net

5
推荐指数
1
解决办法
2435
查看次数

如何在Lucene.NET中使用运算符组合术语查询和数字查询?

我已经尝试了以下方法来组合查询,但我不知道如何在这些查询中添加(AND,OR,NOT)运算符.

BooleanQuery booleanQuery = new BooleanQuery();
Query query1 = new TermQuery(new Term("Skill_Summary", "Java"));
Query pageQueryRange = NumericRangeQuery.NewIntRange("Experience", 1, 2, true, true);
booleanQuery.Add(query1, BooleanClause.Occur.MUST);
booleanQuery.Add(pageQueryRange, BooleanClause.Occur.MUST);
var hits = searcher.Search(booleanQuery);
Run Code Online (Sandbox Code Playgroud)

以上的结果booleanQuery+Skill_Summary:Java +Experience:[1 TO 2]仍然没有得到结果

String termQueryString = "Skill_Summary:\"Java\"";
Query termQuery = queryParser.Parse(termQueryString);
Query QueryRange = NumericRangeQuery.NewIntRange("Experience", 1, 3, true, true);
Query query = termQuery.Combine(new Query[] { termQuery, QueryRange });
var hits = searcher.Search(query);
Run Code Online (Sandbox Code Playgroud)

c# lucene.net

3
推荐指数
1
解决办法
2662
查看次数

如何使用Lucene.Net中的Whitespaceanalyzer和LowerCase过滤器创建自己的分析器?

在我的情况下,我需要搜索像C#,.Net,C++ ..等标签分析器删除特殊字符的关键字,所以我使用空白分析器,它不适合我.索引时:

public void Indexing(DataSet ds)
{
        string indexFileLocation = @"D:\Lucene.Net\Data";
        Lucene.Net.Store.Directory dir = Lucene.Net.Store.FSDirectory.GetDirectory(indexFileLocation, true);
        IndexWriter indexWriter = new IndexWriter(dir, new WhitespaceAnalyzer(), Lucene.Net.Index.IndexWriter.MaxFieldLength.UNLIMITED);
        if (ds.Tables[0] != null)
        {
            DataTable dt = ds.Tables[0];
            if (dt.Rows.Count > 0)
            {
                foreach (DataRow dr in dt.Rows)
               {
                    //Create the Document object
                    Document doc = new Document();

                    foreach (DataColumn dc in dt.Columns)
                    {
                        string check = dc.ToString();

                        if (check.Equals("Skill_Summary"))
                        {
                            doc.Add(new Field(dc.ColumnName, dr[dc.ColumnName].ToString(), Field.Store.YES, Field.Index.ANALYZED));
                        }
                        if (check.Equals("Title"))
                        {
                            doc.Add(new Field(dc.ColumnName, dr[dc.ColumnName].ToString(), Field.Store.YES, Field.Index.ANALYZED)); …
Run Code Online (Sandbox Code Playgroud)

c# lucene lucene.net

2
推荐指数
1
解决办法
2696
查看次数

标签 统计

c# ×4

lucene.net ×4

lucene ×2