namazu-ml(ring)


[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Addtional score.



まえだです。

すぎうらさん>
> 細かい話は抜きにして、namazuをもっと便利に!という話ならこういったジワ
> ジワと進化していく重みづけは大賛成ですが、とりあえずjp.FreeBSD.orgのと
> この検索ページを便利にというのであれば、JavaHouseのようにトピックとして
> 別項に集めていくという方法もいいんじゃないかと思います。

FreeBSD の場合に限っていってしまうと、QandA というものがあり
(<http://www.jp.freebsd.org/QandA/A>)ますので、こちらがそれ
に該当するのでしょう。

また、別プロジェクトで www-links というプロジェクトがあるの
ですが(こちらは発足したてで、まだ 公開できる web はありませ
ん)、こちらも、ユーザ投稿型になる予定です。

どちらにしても、付加的なスコアがあれば、管理者が意図的にある
記事のスコアをあげたり下げたりということができるので、私とし
てはnamazuで欲しい機能の一つです。

一応、そのパッチをつけておきます。1.3.0.6用です。大したこと
はやってなくって、NMZ.as があれば、それをスコアとして加算す
るというだけです。

このMLにこういうパッチを流しても良いんですよね? namazu-devの
方が良いのでしょうか?
--- namazu.h.orig	Mon Mar 15 17:44:53 1999
+++ namazu.h	Wed May 12 08:56:11 1999
@@ -102,7 +102,7 @@
 extern uchar DEFAULT_DIR[];
 extern uchar *DbNames[];
 extern uchar Lang[];
-extern FILE *Flist, *FlistIndex, *Index, *IndexIndex, *Hash;
+extern FILE *Flist, *FlistIndex, *Index, *IndexIndex, *Hash, *AdditionalScore;
 
 extern uchar BASE_URL[];
 extern uchar URL_REPLACE_FROM[];
@@ -130,6 +130,7 @@
 extern uchar WORDLIST[];
 extern uchar FIELDINFO[];
 extern uchar DATEINDEX[];
+extern uchar ASCORE[];
 
 extern uchar PHRASE[];
 extern uchar PHRASEINDEX[];
--- search.c.orig	Mon Mar 15 17:44:53 1999
+++ search.c	Wed May 12 09:01:23 1999
@@ -701,6 +701,7 @@
     if (Hash == NULL) {
 	return 1;
     }
+    AdditionalScore = fopen(ASCORE, "rb");
     return 0;
 }
 
@@ -710,6 +711,8 @@
     fclose(Index);
     fclose(IndexIndex);
     fclose(Hash);
+    if (AdditionalScore != NULL)
+        fclose(AdditionalScore);
 }
 
 
@@ -859,6 +862,18 @@
     initialize_parser();
     hlist = expr();
 
+    if (AdditionalScore != NULL) {
+	    int as, i;
+	    for (i = 0; i < hlist.n; i++) {
+		    if (fseek(AdditionalScore, hlist.fid[i] * sizeof(int), 0)
+			!= -1) {
+			    if (freadx(&as, sizeof(int), 1, AdditionalScore)
+				!= sizeof(int)) 
+				    hlist.scr[i] += as;
+		    }
+	    }
+    }
+    
     if (hlist.n) /* if hit */
         set_did_hlist(hlist, n);
     if (!HitCountOnly && !MoreShortFormat && !NoReference) {
--- values.c.orig	Mon Mar 15 17:44:53 1999
+++ values.c	Wed May 12 08:56:11 1999
@@ -68,6 +68,7 @@
 uchar WORDLIST[BUFSIZE] = "NMZ.w";
 uchar FIELDINFO[BUFSIZE] = "NMZ.field.";  /* followed by field name */
 uchar DATEINDEX[BUFSIZE] = "NMZ.t"; 
+uchar ASCORE[BUFSIZE] = "NMZ.as";
 
 uchar PHRASE[BUFSIZE] = "NMZ.p";
 uchar PHRASEINDEX[BUFSIZE] = "NMZ.pi";
@@ -107,5 +108,5 @@
 uchar KeyTable[BUFSIZE];		/* table which saving query */
 uchar *KeyItem[KEY_ITEM_MAX + 1];	/* pointers of items of query */
 uchar *DbNames[DB_MAX + 1];   /* name of databases */
-FILE *Flist, *FlistIndex, *Index, *IndexIndex, *Hash, *Phrase, *PhraseIndex;
+FILE *Flist, *FlistIndex, *Index, *IndexIndex, *Hash, *Phrase, *PhraseIndex, *AdditionalScore;
 
--- namazu.h.orig	Mon Mar 15 17:44:53 1999
+++ namazu.h	Wed May 12 08:56:11 1999
@@ -102,7 +102,7 @@
 extern uchar DEFAULT_DIR[];
 extern uchar *DbNames[];
 extern uchar Lang[];
-extern FILE *Flist, *FlistIndex, *Index, *IndexIndex, *Hash;
+extern FILE *Flist, *FlistIndex, *Index, *IndexIndex, *Hash, *AdditionalScore;
 
 extern uchar BASE_URL[];
 extern uchar URL_REPLACE_FROM[];
@@ -130,6 +130,7 @@
 extern uchar WORDLIST[];
 extern uchar FIELDINFO[];
 extern uchar DATEINDEX[];
+extern uchar ASCORE[];
 
 extern uchar PHRASE[];
 extern uchar PHRASEINDEX[];
--- search.c.orig	Mon Mar 15 17:44:53 1999
+++ search.c	Wed May 12 20:13:16 1999
@@ -701,6 +701,7 @@
     if (Hash == NULL) {
 	return 1;
     }
+    AdditionalScore = fopen(ASCORE, "rb");
     return 0;
 }
 
@@ -710,6 +711,8 @@
     fclose(Index);
     fclose(IndexIndex);
     fclose(Hash);
+    if (AdditionalScore != NULL)
+        fclose(AdditionalScore);
 }
 
 
@@ -859,6 +862,18 @@
     initialize_parser();
     hlist = expr();
 
+    if(AdditionalScore != NULL) {
+        int as, i;
+        for(i = 0; i < hlist.n; i++) {
+            if(fseek(AdditionalScore, hlist.fid[i] * sizeof(int), 0) != -1 &&
+               freadx(&as, sizeof(int), 1, AdditionalScore) != sizeof(int)) { 
+                    hlist.scr[i] += as;
+                    if (hlist.scr[i] < 1)
+                        hlist.scr[i] = 1;
+            }
+        }
+    }
+    
     if (hlist.n) /* if hit */
         set_did_hlist(hlist, n);
     if (!HitCountOnly && !MoreShortFormat && !NoReference) {
--- values.c.orig	Mon Mar 15 17:44:53 1999
+++ values.c	Wed May 12 08:56:11 1999
@@ -68,6 +68,7 @@
 uchar WORDLIST[BUFSIZE] = "NMZ.w";
 uchar FIELDINFO[BUFSIZE] = "NMZ.field.";  /* followed by field name */
 uchar DATEINDEX[BUFSIZE] = "NMZ.t"; 
+uchar ASCORE[BUFSIZE] = "NMZ.as";
 
 uchar PHRASE[BUFSIZE] = "NMZ.p";
 uchar PHRASEINDEX[BUFSIZE] = "NMZ.pi";
@@ -107,5 +108,5 @@
 uchar KeyTable[BUFSIZE];		/* table which saving query */
 uchar *KeyItem[KEY_ITEM_MAX + 1];	/* pointers of items of query */
 uchar *DbNames[DB_MAX + 1];   /* name of databases */
-FILE *Flist, *FlistIndex, *Index, *IndexIndex, *Hash, *Phrase, *PhraseIndex;
+FILE *Flist, *FlistIndex, *Index, *IndexIndex, *Hash, *Phrase, *PhraseIndex, *AdditionalScore;