Add Msg20Reply::m_isDisplaySumSetFromTags

This commit is contained in:
Ai Lin Chia
2016-03-01 18:24:44 +01:00
parent 66a3b57e2b
commit a2cd4a5675
5 changed files with 35 additions and 3 deletions

@ -184,6 +184,8 @@ public:
char m_outlinkInContent ; // set for m_getLinkText
char m_outlinkInComment ; // set for m_getLinkText
char m_isPermalink ; // set for m_getLinkText (buzz)
bool m_isDisplaySumSetFromTags;
// . serialize() converts these ptrs into offsets in m_buf[] and
// deserialize() converts them back into ptrs on the receiver's end

@ -14,6 +14,7 @@ Summary::Summary()
, m_numDisplayLines(0)
, m_displayLen(0)
, m_maxNumCharsPerLine(0)
, m_isSetFromTags(false)
, m_q(NULL)
, m_wordWeights(NULL)
, m_wordWeightSize(0)
@ -45,6 +46,10 @@ int32_t Summary::getSummaryLen() {
return m_summaryLen;
}
bool Summary::isSetFromTags() {
return m_isSetFromTags;
}
bool Summary::verifySummary( char *titleBuf, int32_t titleBufLen ) {
if ( m_summaryLen > 0 ) {
// trim elipsis
@ -89,6 +94,8 @@ bool Summary::setSummaryFromTags( Xml *xml, int32_t maxSummaryLen, char *titleBu
// itemprop = "description"
if ( xml->getTagContent("itemprop", "description", m_summary, MAX_SUMMARY_LEN, minSummaryLen, maxSummaryLen, &m_summaryLen) ) {
if ( verifySummary( titleBuf, titleBufLen ) ) {
m_isSetFromTags = true;
if ( g_conf.m_logDebugSummary ) {
log(LOG_DEBUG, "sum: generated from itemprop description. summary='%.*s'", m_summaryLen, m_summary);
}
@ -100,6 +107,8 @@ bool Summary::setSummaryFromTags( Xml *xml, int32_t maxSummaryLen, char *titleBu
// meta property = "og:description"
if ( xml->getTagContent("property", "og:description", m_summary, MAX_SUMMARY_LEN, minSummaryLen, maxSummaryLen, &m_summaryLen, true, TAG_META ) ) {
if ( verifySummary( titleBuf, titleBufLen ) ) {
m_isSetFromTags = true;
if ( g_conf.m_logDebugSummary ) {
log(LOG_DEBUG, "sum: generated from meta property og:description. summary='%.*s'", m_summaryLen, m_summary);
}
@ -111,6 +120,8 @@ bool Summary::setSummaryFromTags( Xml *xml, int32_t maxSummaryLen, char *titleBu
// meta name = "description"
if ( xml->getTagContent("name", "description", m_summary, MAX_SUMMARY_LEN, minSummaryLen, maxSummaryLen, &m_summaryLen, true, TAG_META ) ) {
if ( verifySummary( titleBuf, titleBufLen ) ) {
m_isSetFromTags = true;
if ( g_conf.m_logDebugSummary ) {
log(LOG_DEBUG, "sum: generated from meta name description. summary='%.*s'", m_summaryLen, m_summary);
}

@ -49,6 +49,8 @@ public:
int32_t getSummaryDisplayLen();
int32_t getSummaryLen();
bool isSetFromTags();
private:
bool verifySummary( char *titleBuf, int32_t titleBufLen );
@ -70,6 +72,8 @@ private:
int32_t m_maxNumCharsPerLine;
bool m_isSetFromTags;
// ptr to the query
Query *m_q;

@ -19353,7 +19353,7 @@ Msg20Reply *XmlDoc::getMsg20Reply ( ) {
// do they want a summary?
if ( m_req->m_numSummaryLines>0 && ! reply->ptr_displaySum ) {
char *hsum = getHighlightedSummary();
char *hsum = getHighlightedSummary( &(reply->m_isDisplaySumSetFromTags) );
if ( ! hsum || hsum == (void *)-1 ) {
return (Msg20Reply *)hsum;
@ -20315,8 +20315,12 @@ Summary *XmlDoc::getSummary () {
return &m_summary;
}
char *XmlDoc::getHighlightedSummary ( ) {
char *XmlDoc::getHighlightedSummary ( bool *isSetFromTagsPtr ) {
if ( m_finalSummaryBufValid ) {
if ( isSetFromTagsPtr ) {
*isSetFromTagsPtr = m_isFinalSummarySetFromTags;
}
return m_finalSummaryBuf.getBufStart();
}
@ -20333,12 +20337,18 @@ char *XmlDoc::getHighlightedSummary ( ) {
// get the summary
char *sum = s->getSummary();
int32_t sumLen = s->getSummaryDisplayLen();
m_isFinalSummarySetFromTags = s->isSetFromTags();
// assume no highlighting?
if ( ! m_req->m_highlightQueryTerms || sumLen == 0 ) {
m_finalSummaryBuf.safeMemcpy ( sum , sumLen );
m_finalSummaryBuf.nullTerm();
m_finalSummaryBufValid = true;
if ( isSetFromTagsPtr ) {
*isSetFromTagsPtr = m_isFinalSummarySetFromTags;
}
return m_finalSummaryBuf.getBufStart();
}
@ -20366,6 +20376,10 @@ char *XmlDoc::getHighlightedSummary ( ) {
m_finalSummaryBufValid = true;
m_finalSummaryBuf.nullTerm();
if ( isSetFromTagsPtr ) {
*isSetFromTagsPtr = m_isFinalSummarySetFromTags;
}
return m_finalSummaryBuf.getBufStart();
}

@ -633,7 +633,7 @@ public:
SafeBuf *getHeaderTagBuf();
class Title *getTitle ();
class Summary *getSummary () ;
char *getHighlightedSummary ();
char *getHighlightedSummary ( bool *isSetFromTagsPtr );
char *getIsNoArchive ( ) ;
int32_t *getUrlFilterNum();
char *getIsLinkSpam ( ) ;
@ -786,6 +786,7 @@ public:
SafeBuf m_fragBuf;
SafeBuf m_wordSpamBuf;
SafeBuf m_finalSummaryBuf;
bool m_isFinalSummarySetFromTags;
int32_t m_firstIp;
class SafeBuf *m_savedSb;