[英]Searching Lucene.Net index for an url field
我想在Lucene.net索引中搜索存储的URL字段。 我的代码如下:
Field urlField = new Field("Url", url.ToLower(), Field.Store.YES,Field.Index.TOKENIZED);
document.Add(urlField);`
indexWriter.AddDocument(document);
我正在使用上面的代码写入索引。
和下面的代码来搜索索引中的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....
}
但是每当我搜索一个网址时,例如: http://www.xyz.com/
: http://www.xyz.com/
,我都不会获得任何点击。
不知何故,想出了替代方案。 但这仅适用于索引中只有一个文档的情况。 如果还有更多文档,则下面的代码将不会产生正确的结果。 有任何想法吗? 请帮助
编写索引时,请使用KeywordAnalyzer()
KeywordAnalyzer _analyzer = new KeywordAnalyzer();
indexWriter = new IndexWriter(_directory, _analyzer, true, IndexWriter.MaxFieldLength.UNLIMITED);
然后在搜索的同时,使用KeywordAnalyzer()
IndexReader reader = IndexReader.Open(_directory);
KeywordAnalyzer _analyzer = new KeywordAnalyzer();
IndexSearcher indexSearcher = new IndexSearcher(reader);
QueryParser parser = new QueryParser("Url", _analyzer);
Query query = parser.Parse("\"" + url.ToString() + "\"");
TopDocs hits = indexSearcher.Search(query, null, 1);
这是因为KeywordAnalyzer将整个流“标记化”为单个标记。
请帮忙。 这非常紧急。
干杯Sunil ...
这对我有用:
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通过URL搜索
尝试在查询周围加上引号,例如。 像这样 :
“http://www.google.com/”
使用空格或关键字分析器应该可以。
会有人实际搜索“ http://www.Google.com”吗? 似乎用户更有可能搜索“ Google”。
如果部分匹配,则始终可以返回整个URL。 我认为标准分析器应该更适合搜索和检索URL。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.