簡體   English   中英

Lucene.net-在短語中搜索詞

[英]Lucene.net - Search for terms within a phrase

我創建了這樣的索引:

var doc = new Document();
doc.Add(new Field("id", product.Id.ToString(), Field.Store.YES, Field.Index.NO));
doc.Add(new Field("name", product.Label, Field.Store.NO, Field.Index.NOT_ANALYZED));
writer.AddDocument(doc);

我要完成的工作是搜索短語中所有術語的完全匹配。 假設我的索引包含2個文檔(“ test 123”,“ foo”)

如果我輸入類似的短語:

  • '我是foo',然后返回文檔'foo'
  • “我是測試”應該什么也不會返回
  • “我是測試123”返回“測試123”

在不包含任何空格的短語中搜索“ foo”之類的單個元素可以正常工作。 但是,當該短語包含空格時,我在努力。 “我是測試123”和“測試123”均未返回任何內容。

我懷疑它可能來自於分析器,因此我嘗試了StandardAnalyzer和KeywordAnalyzer,但問題仍然存在。 任何幫助,將不勝感激。

當我搜索字符串時,我會這樣做:

var searchString =“我是foo”; var searchTerms = searchString.Split('');

該查詢將看起來像:

+(name:i name:am name:foo) name:"I am foo"

解釋:+在查詢之前,必須先有一個詞才可以匹配。 我逐個搜索每個詞,更多匹配項=希格勒比分我也搜索搜索字符串作為短語,因為那樣我就可以確保,如果它是直接匹配項,它將獲得最高分。

您甚至可以使用Fuzzy和Wildcard進行搜索,因此覆蓋范圍很廣,但仍然可以在頂部獲得最佳結果。

希望能幫助到你。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM