請問如何精確搜尋用空格所分割的多組短語?

24 views
Skip to first unread message

truth

unread,
May 23, 2010, 9:56:46 AM5/23/10
to sphinx-for-chinese
比如說,有三份文件內容如下:

文件A:「故善者,能為不可勝,不能使敵可勝。」

文件B:「故舉秋毫不為多力,視日月不為明目,聞雷霆不為聰耳。所謂善者,勝易勝者也。」

文件C:「故善者之戰,無奇勝,無智名,無勇功。」

而查詢「不 故善」的時候,只能出現文件A而不能出現文件B、也不能出現文件C,請問該如何做呢?

*「不 故善」這兩組字詞,是表示「不」 AND 「故善」的意思,並且「故善」要能精確符合。

Shi Zhuguo

unread,
May 28, 2010, 9:58:28 PM5/28/10
to sphinx-for-chinese
不太明白你的意思,此类问题一般要看分词的词表和检索时的语法。可以尝试一下phrase search operator和strict
order operator,如

不 << "故善"

(仅此举例,语法不一定100%正确,请查看sphinx的官方文档,但我相信应该是可以解决的)

truth

unread,
May 28, 2010, 11:47:02 PM5/28/10
to sphinx-for-chinese
初步測驗(sphinx0.99),似乎是searchd有無視phrase search operator的問題。

我用(其中 stdin.txt 的內容為 "SSL certificate until" )
search -e -c c:\sphinx\sphinx.conf --stdin < stdin.txt
其結果為(正確):
using config file 'c:\sphinx\sphinx.conf'...
index 'wiki_main': query '"SSL certificate until"
': returned 1 matches of 1 total in 0.003 sec

但若是用libsphinxclient裡的範例 test.c 去作檢索(query = "\"SSL certificate until
\"";)
其結果為(多找了一筆):
Query '"SSL certificate until"' retrieved 2 of 2 matches in 0.005 sec.


用winsock連線query的結果是引號被無視。


On 5月29日, 上午9時58分, Shi Zhuguo <bluefl...@gmail.com> wrote:
> 不太明白你的意思,此類問題一般要看分詞的詞表和檢索時的語法。可以嘗試一下phrase search operator和strict


> order operator,如
>
> 不 << "故善"
>

> (僅此舉例,語法不一定100%正確,請查看sphinx的官方文檔,但我相信應該是可以解決的)

truth

unread,
May 28, 2010, 10:46:07 PM5/28/10
to sphinx-for-chinese
抱歉補充一下,個人試驗在search.exe上用--stdin讀入關鍵字檔,phrase search operator是有效的。上一封說用
phrase search operator無效,是在mediawiki上的extension無效,猜想有可能是「"」被略去了。個人再多試試看
好了,謝謝提醒!


On 5月29日, 上午9時58分, Shi Zhuguo <bluefl...@gmail.com> wrote:

> 不太明白你的意思,此類問題一般要看分詞的詞表和檢索時的語法。可以嘗試一下phrase search operator和strict


> order operator,如
>
> 不 << "故善"
>

> (僅此舉例,語法不一定100%正確,請查看sphinx的官方文檔,但我相信應該是可以解決的)
>

truth

unread,
May 28, 2010, 10:16:51 PM5/28/10
to sphinx-for-chinese
比如說,原版的sphinx search在設定為SPH_MATCH_EXTENDED mode時,預設上所有的中文句子都會被分割成單字+AND
的方式進行檢索,原本希望檢索「不 AND 故善」,但「故善」二字卻會被自動分割成「故」與「善」進行AND搜尋(也就是「不 AND 故 AND
善」,但這不是我要的)。之前曾經試過用「"故善"」,但似乎結果一樣?

以上是預設不用分詞的情況。不知道能否解決?

On 5月29日, 上午9時58分, Shi Zhuguo <bluefl...@gmail.com> wrote:

> 不太明白你的意思,此類問題一般要看分詞的詞表和檢索時的語法。可以嘗試一下phrase search operator和strict


> order operator,如
>
> 不 << "故善"
>

> (僅此舉例,語法不一定100%正確,請查看sphinx的官方文檔,但我相信應該是可以解決的)
>

truth

unread,
Jun 5, 2010, 5:47:10 PM6/5/10
to sphinx-for-chinese
結果是用winsock來query字串時,若查尋的字串裡有引號,則字串裡會多出backslash。不知道是不是bug,只好在
sphParseExtendedQuery裡做一個消掉backslash的動作來繞過這個問題。

另外還發現一個疑似bug,不知道有沒有朋友能幫忙解決?

這個問題是,雖然查尋的字串裡有引號,而找出來的文件數也大概正確。但對所找出來的每一份文件做BuildExcerpt,卻發現會有多餘的查尋結果。
比如說,關鍵字用 "舉秋毫" ,但返回的結果,除了 "舉秋毫" 一詞以外,連只有「舉」、「秋」、「毫」這三個單字搜尋結果也列了出來?

Reply all
Reply to author
Forward
0 new messages