C# 在Lucene.Net索引中搜索url字段

C# 在Lucene.Net索引中搜索url字段,c#,lucene,lucene.net,C#,Lucene,Lucene.net,我想在Lucene.net索引中搜索存储的url字段。我的代码如下: Field urlField = new Field("Url", url.ToLower(), Field.Store.YES,Field.Index.TOKENIZED); document.Add(urlField);` indexWriter.AddDocument(document); 我正在使用上面的代码写入索引 Lucene.Net.Store.Directory _directory = FSDirector

我想在Lucene.net索引中搜索存储的url字段。我的代码如下:

Field urlField = new Field("Url", url.ToLower(), Field.Store.YES,Field.Index.TOKENIZED);
document.Add(urlField);`
indexWriter.AddDocument(document);
我正在使用上面的代码写入索引

Lucene.Net.Store.Directory _directory = FSDirectory.GetDirectory(Host, false);
IndexReader reader = IndexReader.Open(_directory);
KeywordAnalyzer _analyzer = new KeywordAnalyzer();
IndexSearcher indexSearcher = new IndexSearcher(reader);
QueryParser parser = new QueryParser("Url", _analyzer);
Query query = parser.Parse("\"" + downloadDoc.Uri.ToString() + "\"");
TopDocs hits = indexSearcher.Search(query, null, 10);
if (hits.totalHits > 0)
{
    //statements....
}
和下面的代码在索引中搜索Url

Lucene.Net.Store.Directory _directory = FSDirectory.GetDirectory(Host, false);
IndexReader reader = IndexReader.Open(_directory);
KeywordAnalyzer _analyzer = new KeywordAnalyzer();
IndexSearcher indexSearcher = new IndexSearcher(reader);
QueryParser parser = new QueryParser("Url", _analyzer);
Query query = parser.Parse("\"" + downloadDoc.Uri.ToString() + "\"");
TopDocs hits = indexSearcher.Search(query, null, 10);
if (hits.totalHits > 0)
{
    //statements....
}
但每当我搜索url时,例如:
http://www.xyz.com/
,我没有收到任何点击

不知怎的,他想出了另一个选择。但这在索引中只有一个文档的情况下有效。如果有更多文档,下面的代码将不会产生正确的结果。有什么想法吗?请帮忙

编写索引时,请使用KeywordAnalyzer()

然后在搜索的同时,使用KeywordAnalyzer()

这是因为关键字分析器将整个流“标记”为 单一代币

请帮忙。这很紧急

干杯
Sunil…

尝试在查询周围加引号,例如:

"http://www.google.com/"


使用空格或关键字分析器应该可以工作

有人真的会去搜索吗?”http://www.Google.com"? 用户更可能搜索“谷歌”

如果URL是部分匹配的,则始终可以返回整个URL。我认为标准分析器应该更适合搜索和检索URL

这对我很有用:

 IndexReader reader = IndexReader.Open(_directory);                
 IndexSearcher indexSearcher = new IndexSearcher(reader);
 TermQuery tq= new TermQuery(new Term("Url", downloadDoc.Uri.ToString().ToLower()));                
 BooleanQuery bq = new BooleanQuery();
 bq.Add(tq, BooleanClause.Occur.SHOULD);
 TopScoreDocCollector collector = TopScoreDocCollector.create(10, true);
在写入索引时使用StandardAnalyzer

Lucene.Net.Store.Directory _directory = FSDirectory.GetDirectory(Host, false);
IndexReader reader = IndexReader.Open(_directory);
KeywordAnalyzer _analyzer = new KeywordAnalyzer();
IndexSearcher indexSearcher = new IndexSearcher(reader);
QueryParser parser = new QueryParser("Url", _analyzer);
Query query = parser.Parse("\"" + downloadDoc.Uri.ToString() + "\"");
TopDocs hits = indexSearcher.Search(query, null, 10);
if (hits.totalHits > 0)
{
    //statements....
}

这个答案帮助了我:

Lucene匹配索引值,而不是存储值。如何为字段编制索引?我想搜索url是否已编制索引。如果是,我将替换存储的“内容”。url可以是任何格式:
http://www.xyz.com/
http://www.xyz.com/page1/
等_analyzer是标准的analyzer编辑了我的问题。请立即检查。首先尝试使用标准分析仪。去掉查询中的反斜杠…我已经试过了。谢谢。我想搜索一个url是否已经被索引。如果是,我将替换它的“内容”。url可以是任何格式:或etc..
Field urlField=new Field(“url”,url.ToLower(),Field.Store.YES,Field.Index.TOKENIZED)
文档.添加(urlField)
indexWriter.AddDocument(文档)编辑了我的问题。请现在检查。编辑了我的问题。请现在检查。