摘要:總結(jié)兩種方式都能起作用,中綴索引比較簡單,但會大幅度增加索引文件的大小和索引的速度安裝正則引擎比較煩,而且要重新編譯安裝但對索引文件的大小和索引速度的影響較小。
導(dǎo)讀
Sphinx 是一個非常強大的全文搜索引擎,能處理各種復(fù)雜的索引請求.但有時候需要一些特殊的設(shè)置.
問題比如文檔中有一種詞,該詞包含了字母和數(shù)字,比如(onepiece123) 如果一般情況下直接搜索onepiece或者123的時候,你是得不到這個文檔的.
原因sphinx在處理單詞時,把整個詞看作一個整體,用關(guān)鍵詞搜索的時候也是,比如,搜索詞如果是onepiece,那么得到的文檔只能是包含了onepiece這個詞段(如onepiece 123)的才能被索引到,否則除非直接搜索onepiece123,你是得不到文檔onepiece123的.
解決方式這種時候有兩種方式可以解決:
中綴索引設(shè)置中綴索引長度,中綴索引可以讓我們進(jìn)行通配符搜索文檔的操作,比如word, word*, *word
min_infix_len
中綴索引長度默認(rèn)為0,即不做中綴索引,假如設(shè)置成一個合適的長度,那么就能根據(jù)單詞的某一部分查找到對應(yīng)的文檔,比如把min_infix_len 設(shè)置為2, 那么文檔中包含test的詞匯就會被分成 te, es, st tes, est,test這幾種(最小長度2),當(dāng)我們用關(guān)鍵字es 去搜索的時候,就能命中這個包含test的文檔,當(dāng)然,這也導(dǎo)致了我們的索引文件大小大幅度增加,索引速度降低的問題
為了解決開始的時候我們提到的這種單詞帶數(shù)字的查找,我們可以設(shè)置一個比較合適的中綴索引長度,比如8,那么包含onepiece123這個詞的文檔會被分成onepiece, onepiece1, onepiece12, onepiece123, nepiece12,...等等(按順序包含至少8個原有字符,不能跳過任意的字母),這樣,當(dāng)我們搜索oinepiece的時候, 因為原有的oinepiece123文檔被分成了包含了onepiece等多個的文檔,我們就能命中這個oinepiece123所在的文檔了.
設(shè)置regexp_filter該設(shè)置允許我們通過正則的方式映射最終的文檔格式.那樣的話我們就能統(tǒng)一一些常見的單詞或者短語的格式了.
比如
"iphone 3gs" , "iphone 3 gs" (或者甚是 "iphone3 gs")
當(dāng)我們在搜索這些關(guān)鍵詞的時候,我們都希望能命中包含iphone3gs這個文檔,我們可以像這樣設(shè)置索引:
regexp_filter?。健(iphone 3gs)| (iphone 3 gs) | (iphone3 gs)] => iphone3gs
這樣在創(chuàng)建索引的時候, 所有包含上面三種的iphone 3gs的格式都能映射成iphone3gs, 在搜索iphone3gs的時候, 就能命中所有包含上面三種詞的文檔了
回歸我們的初始問題,這種方式處理單詞+數(shù)字的索引設(shè)置可以這么設(shè)置
regexp_filter?。健?[a-z|A-Z]+)(d+) =>1 2
"1"和"2"之間有空格,"1"對應(yīng)單詞的正則匹配, "2"對應(yīng)數(shù)字的正則匹配,中間加了一個空格,這就表示在創(chuàng)建索引的時候單詞+數(shù)字的文檔會被分開.
不過要說明的是,如果想使用這個配置,需要安裝一個名叫re2的正則引擎替代系統(tǒng)內(nèi)置的正則引擎,安裝好后重新編譯安裝sphinx的源碼,在./configure的時候帶上參數(shù)
--with-re2,然后regexp_filter才會游泳
這樣也能解決單詞+數(shù)字的搜索問題。
總結(jié)兩種方式都能起作用,中綴索引比較簡單,但會大幅度增加索引文件的大小和索引的速度.regexp_filter安裝正則引擎比較煩,而且要重新編譯安裝sphinx, 但對索引文件的大小和索引速度的影響較小。
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/20948.html
摘要:本文以為例來介紹如何打造自己的搜索引擎。其官方網(wǎng)站是可以說支持包括英文中文等所有語言的搜索。默認(rèn)把中文按字拆分的,但這樣就會產(chǎn)生搜索出不相干的內(nèi)容來。因此,有人就給打了中文分詞的補丁。 Google搜索引擎建立至今已經(jīng)快20年了,之后全球各類大大小小類似的搜索引擎也陸續(xù)出現(xiàn)、消亡。國內(nèi)目前以百度為大,搜狗、360、必應(yīng)等也勢在必爭。搜索引擎技術(shù)也發(fā)展的相當(dāng)成熟,同時也就出現(xiàn)了很多開源的...
摘要:簡介是開源的搜索引擎,它支持英文的全文檢索。但是往往我們要求的是中文索引,怎么做呢國人提供了一個可供企業(yè)使用的,基于的中文全文檢索引擎。 Sphinx 簡介 Sphinx是開源的搜索引擎,它支持英文的全文檢索。所以如果單獨搭建Sphinx,你就已經(jīng)可以使用全文索引了。但是往往我們要求的是中文索引,怎么做呢?國人提供了一個可供企業(yè)使用的,基于Sphinx的中文全文檢索引擎。也就是說Cor...
摘要:簡介是開源的搜索引擎,它支持英文的全文檢索。但是往往我們要求的是中文索引,怎么做呢國人提供了一個可供企業(yè)使用的,基于的中文全文檢索引擎。 Sphinx 簡介 Sphinx是開源的搜索引擎,它支持英文的全文檢索。所以如果單獨搭建Sphinx,你就已經(jīng)可以使用全文索引了。但是往往我們要求的是中文索引,怎么做呢?國人提供了一個可供企業(yè)使用的,基于Sphinx的中文全文檢索引擎。也就是說Cor...
閱讀 1981·2023-04-25 15:45
閱讀 1219·2021-09-29 09:34
閱讀 2509·2021-09-03 10:30
閱讀 2015·2019-08-30 15:56
閱讀 1470·2019-08-29 15:31
閱讀 1276·2019-08-29 15:29
閱讀 3207·2019-08-29 11:24
閱讀 3065·2019-08-26 13:45