2010-02-22 150 views
1

我有一個數據庫,裏面有很多書。我有字段,如標題,描述,作者等使用Lucene更好的搜索結果

我索引標題與100f的提升和描述與0.1f的提升,這兩個字段標記和阻止。

我正在使用一個輸入字段進行搜索,該字段使用booleanquery在所有可用字段中搜索,並使用booleanquery與BooleanClause.Occur.SHOULD結合幷包含每個字段的通配符。我也從查詢中刪除所有「停用詞」以開始。

我遇到的問題是,當我搜索的字符串不帶引號

「德wetenschap麪包車HET利文」,刪除停用詞後,我得到「wetenschap利文」

標題查詢變成「*wetenschap * *leven *」,則描述查詢相同,並且包含booleanquery和BooleanClause.Occur.SHOULD。

下面的書籍在DB

  • Wetenschappelijk denken。 Een inleiding voor de medische en biomedische wetenschappen en voor de andere levenswetenschap。
  • De wetenschap van de aarde。在EEN levende planeet
  • 阿特拉斯範·德· menselijke levensloop
  • 德wetenschap 麪包車HET利文。在eenheid在 biologische diversiteit

在第4本書的賬面回報,這是很好的,但在此實現,我們在3切斷,其餘低於閱讀更多鏈接。對我來說,「De wetenschap van het leven。Over eenheid in biologische diversiteit」這本書與查詢「more」和其他人(或者我覺得)相匹配,但是我是無法找到正確的索引/搜索組合來完成此項工作。有人有想法嗎?

回答

2

幾點建議:

  1. 不要刪除停止的話 - 他們似乎是搜索查詢的一個重要組成部分。
  2. 不要使用通配符 - 只搜索你需要的單詞。我相信最好的是使用PhraseQuery - 例如「de wetenschap van het leven」。
  3. 不要搜索過去的句子結尾。這更加困難 - 您可能需要分別爲每個句子編制索引。
  4. 閱讀Debugging Relevance Issues in Search - 你可能會得到其他的想法。
0

我通過在整個字符串中添加短語搜索來改進了相關性。通過這種方式,我們仍然可以得到「搜索一切」的行爲,而其他標題則更加相關。

+0

它已經一段時間,但你怎麼做一個完整的字符串詞組搜索,以及,你只需要做兩個搜查然後以某種方式結合起來的結果? – Kevin 2012-08-24 19:19:41

1

我認爲SpanQuery(特別是SpanNearQuery)可能是你需要的。

給定一個文檔「敏捷的棕色狐狸跳過了一隻懶惰的狗」

它可以找到「有緣」和「懶狗」匹配。您可以調整斜率設置來調整這兩個搜索查詢短語/詞之間的距離....總之,它爲您提供了很多工具來調整你的搜索。

而且不熟悉的荷蘭你可能希望儘可能地阻止你的查詢,並避免導致通配符語言(?) - 他們是相當昂貴的,並導致較低的精確度和召回。