2010-03-23 47 views
0

我有一個指標,與現場「所屬」查詢,一些示例值:Lucene的 - 長串

  • 「斯坦福大學醫學院,帕洛阿爾託,美國加利福尼亞州的」
  • 「神經生物學研究所,醫學院,斯坦福大學,帕洛阿爾託,加利福尼亞州的學校」,
  • ‘雜誌,哈佛大學,馬薩諸塞州波士頓的學校’,
  • ‘布里格姆&婦女,醫學,馬薩諸塞州波士頓的哈佛大學校’
  • 「哈佛大學,馬薩諸塞州劍橋」

等等...(底線是的隸屬關係都寫在多個方面,沒有明顯的一致性)

我查詢的單位欄索引使用「加州帕羅奧多斯坦福大學醫學院」(使用QueryParser)來查找斯坦福大學的所有相關文檔,我可能會因爲醫學院等的存在而獲得大量假+血統。 :我不能使用短語查詢,因爲在構建關聯的方式中存在可變性)

我試過以下內容:

  1. 通過用逗號分割一個空格(在這裏我沒有得到任何結果!)

  2. 試圖提高(使用^)拆分搜索短語,促進最後的部分,如「帕洛阿爾託使用SpanNearQuery奧拓CA「,比起最初的短語來得更高。在這裏,我仍然得到很多假的+ ves。

對如何處理這有什麼建議?如果SpanNearQuery的方式去,任何想法,爲什麼我得到0結果?

回答

0

這是我如何做的:

  1. 添加常用的詞彙,如「大學」,「學校」,「藥」,「學院」等,以停用詞列表。

  2. 對每個術語使用booleanquery,並將setMinimumNumberShouldMatch()設置爲查詢字符串長度的75%。

最後,遍歷命中集電極和使用一個字符串比較算法等哈羅-溫克勒,萊文施泰因等用於第二級濾波。 (這很慢但確保精確度)。

希望這會有所幫助。

1

您是使用OR搜索而不是AND?

您可以使用QueryParser.setDefaultOperator()將默認運算符設置爲AND。將默認運算符設置爲AND應消除所有的誤報。但是,如果您的索引值爲"Stanford University School of Medicine, Palo Alto, CA ",,並且您正在搜索"Stanford University School of Medicine, Palo Alto, CA USA",(請注意額外的美國在查詢中。)

如果您的查詢的索引值不會超過索引值,應該解決你的問題。

+0

謝謝我嘗試了這種方法,但是我不能保證查詢條件會比索引值更小。爲了給你一個想法,查詢是通過點擊文本鏈接進行的。任何想法爲什麼spanquery可能不工作? – Mikos 2010-03-24 09:32:18

+0

+1爲你的迴應,但我接近它的不同。 – Mikos 2010-03-25 05:21:40