2016-07-24 45 views
2

我有一個要求,做一個確切的,然後部分匹配領域。 當前對於相同的數據,我創建了兩個字段中的一個TextField(用於部分匹配)和另一個StringField(用於完全匹配)。我有很多這樣的領域,我需要應用類似的邏輯。如何在Lucene文本字段上進行精確和部分匹配?

你可以有人建議一個更好的方法嗎?

感謝, PARTH

+0

爲什麼不加入一個複選框「精確匹配」,並且只使用一個StringField有一個標記申請根據匹配類型該複選框是否被選中? – davidxxx

回答

0

每當精確匹配是需要的,只是用雙引號(「)查詢或使用phrase query最終設置默認斜率( 設置的兩個詞之間允許其它詞的數量查詢短語)。對於部分匹配,一個正常的查詢就可以了。

+0

謝謝AR1。我按照建議嘗試了TextField上的短語查詢,但是它做了部分匹配。如何與詞組查詢完全匹配?你可以請張貼一些代碼嗎? – user3222372

+0

@ user3222372 - 我相信可能存在一些關於「完全匹配」對您意味着什麼的混淆。 – femtoRgon

2

最短的解決方案是使用邏輯布爾查詢(FieldName:test) or (FieldName:test*) or (FieldName:test~)而不是創建多個領域。

在這個例子中,我們試圖匹配次稀土元素不同的情況:

  1. 精確匹配
  2. 部分匹配
  3. 模糊搜索
+0

對於遲到的回覆感到抱歉。完全匹配(FieldName:test)會返回所有在其中進行測試的文檔。在我的情況下,完全匹配的定義只是該字段出現在字段中。 – user3222372