我想在我們的某個網站上使用Lucene.NET的測試用例。我想要做以下事情:Lucene.NET搜索索引方法
索引在一個唯一的ID。 跨逗號分隔的術語或標籤字符串的索引。
例如。
項目1: ID = 1個 標籤=東西,分居,期限
然後我將構建搜索這樣我就可以找對標籤的文件即
標籤:東西,或標籤:獨立-term
我需要維護確切的期限值才能進行搜索。
我有一些正在運行的東西,搜索查詢正在按預期進行解析,但我沒有看到任何結果。這裏有一些代碼。
我解析器(_luceneAnalyzer傳遞到我的索引服務):
var parser = new QueryParser(Lucene.Net.Util.Version.LUCENE_CURRENT, "Tags", _luceneAnalyzer);
parser.SetDefaultOperator(QueryParser.Operator.AND);
return parser;
我的Lucene.NET文檔創建:
var doc = new Document();
var id = new Field(
"Id",
NumericUtils.IntToPrefixCoded(indexObject.id),
Field.Store.YES,
Field.Index.NOT_ANALYZED,
Field.TermVector.NO);
var tags = new Field(
"Tags",
string.Join(",", indexObject.Tags.ToArray()),
Field.Store.NO,
Field.Index.ANALYZED,
Field.TermVector.YES);
doc.Add(id);
doc.Add(tags);
return doc;
我的搜索:
var parser = BuildQueryParser();
var query = parser.Parse(searchQuery);
var searcher = Searcher;
TopDocs hits = searcher.Search(query, null, max);
IList<SearchResult> result = new List<SearchResult>();
float scoreNorm = 1.0f/hits.GetMaxScore();
for (int i = 0; i < hits.scoreDocs.Length; i++)
{
float score = hits.scoreDocs[i].score * scoreNorm;
result.Add(CreateSearchResult(searcher.Doc(hits.scoreDocs[i].doc), score));
}
return result;
我有兩個我的索引中的文檔,其中一個帶有「Something」標籤,另一個帶有「Something」和「Separated-Term」標籤。這對於保留條款非常重要,因爲我希望完全匹配完整值。
當我用「tags:Something」搜索時,我沒有得到任何結果。
問題
分析什麼我應該使用,以實現搜索索引我之後? 有什麼指針可以將搜索結果放在一起嗎? 爲什麼我當前的搜索沒有返回任何結果?
非常感謝
謝謝@Moleski - 在發佈問題後發現了標籤案例問題,但沒有喜悅。你能澄清你的意思嗎?也會看盧克,認爲這只是Java版本。再次感謝! – 2010-03-31 10:25:00