我有一些問題試圖瞭解什麼是非布爾搜索(如果這是有道理的)。就我所知,布爾搜索允許在查詢中使用AND,OR和NOT。但是非布爾搜索呢?我讀過的地方,這意味着你可以搜索子字符串,而不僅僅是完整的單詞,但我想確保我完全理解每一個意思。此外,也許一個例子會有所幫助,例如,谷歌布爾或非布爾?那麼Oracle Text或者Apahe Solr呢?布爾與非布爾搜索
布爾與非布爾搜索
回答
非布爾搜索包括不是純粹的布爾模型技術的方法。
這種方法最常見的例子可能是vector-space model。
在這個模型中,每個文檔都是一個矢量,由它所包含的單詞(或二元組......)表示。每個文檔的維度是詞彙表中詞的數量。
這個模型的相似性是通過創建一個'假'文檔 - 這是查詢,並將這個假文檔與文集中的任何其他文檔進行比較來完成的。文檔與查詢越相似 - 結果越好。
常見的相似性度量是cosine-similarity。
該模型與tf-idf model(td-idf確定每個向量的每個條目中的值是什麼)很好地匹配。
請注意,這不是布爾模型。你不會批評'套',你比較載體的相似性 - 這是完全不同的模型。
此外,這種方法有一個重要的優勢 - 它返回與每個文檔相關的分數,而不僅僅是布爾答案「相關」或「不相關」。
原來的向量空間不允許AND,或oporations,但是通過執行2階段搜索可以很容易地解決這個問題。第一種是使用布爾模型來獲取候選人,第二種是使用向量空間來獲得每個文檔的分數。
其他型號正在建設一個language model出文檔的 - 語言模型被描述爲P(word|M) = the probability of the model M to generate the word
。
通用語言模型是P(word|document) = #occurances(word,document)/|document|
爲了避免出現概率爲零 - 我們通常添加平滑技術。一個常用的方法是:
P(word|document) = alpha*#occurances(word,document)/|document| + (1-alpha)*#occurances(word,corpus)/|corpus|
現在 - 當我們有不止一個學期的查詢:q=t1 t2 ... tn
,我們計算:
P(q|d) = P(t1|d)*P(t2|d)*...*P(tn|d)
注意,這個模式實際上通過設置alpha=1
允許和語義,並OR語義由alpha!=1
。
(1) 布爾搜索基本上被設置術語:
每學期與包含所有在他們這學期的文件一組相關聯。現在,你只需在一堆設置上設置oporations。 AND是交集,OR是聯合。
- 1. 搜索陣列與布爾
- 2. PHP布爾搜索
- 3. lucene布爾搜索
- 4. 位與,非布爾
- 5. 在Lucene中布爾搜索
- 6. MySQL布爾部分搜索
- 7. 陣列上布爾搜索
- 8. 非布爾型
- 9. 與sqlite的布爾的布爾值
- 10. 過濾布爾與布爾查詢:elasticsearch
- 11. webstorm:打字稿布爾與布爾
- 12. 如果(布爾==假)與IF(布爾!)
- 13. 與布爾
- 14. 布爾與jQuery
- 15. 與布爾
- 16. 與布爾
- 17. 布爾檢索PHP
- 18. TensorFlow布爾索引
- 19. 區別布爾和布爾?
- 20. 布爾邏輯[布爾]
- 21. 布爾(布爾)值切換
- 22. java:布爾instanceOf布爾?
- 23. System.Web.UI.Page.ProcessRequestMain(布爾includeStagesBeforeAsyncPoint,布爾includeStagesAfterAsyncPoint)
- 24. 布爾文本在R中搜索
- 25. 彈性搜索布爾查詢
- 26. 布爾運算符在Less中搜索?
- 27. Lucene OR搜索使用布爾查詢
- 28. 布爾PHP MySQL和或不搜索
- 29. Ruby on Rails:用布爾搜索 - postgres
- 30. 布爾變量爲表+搜索
謝謝,我覺得我現在更清楚了。那麼,簡化它是正確的嗎?一種非布爾型搜索類型可以統計文檔中給定詞語的次數,以查看它與搜索之間的相關程度。 – carcaret
@carcaret通常是的,但事實並非如此。一旦可以使用矢量空間模型與二元向量。我個人認爲它沒有任何好處(因爲它比替代方案的信息量少) - 但這是可能的。 – amit