[英]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.