Hi Dave,

A couple more thoughts -

Security is separate from file size.
Maybe assign your users to membership classes, which will cut down
the amount of updating needed over time, as people enter/leave/change roles.
For instance, 'Bob' was in operations with full access, moved to techsupport
with access restricted to a major customers content, then moved to support
their direct competitor with no access to the 1st and full to the
competitor. Ideally, changing Bob's permissions can be done, without
touching the index. There are commercial products available for this sort of
thing. Netegrity Siteminder is one, who had the largest market share. Maybe
read how they handle it, and based on resources build/buy what you need. The
biggest work (not that big) is the integration with
permissions/Single-Sign-On system - LDAP or other. Indexed docs, just get a
security token. Maybe read about Access Control Lists, if you've not worked
with them before.

Breaking big files can be done blindly during index loading, with a scheme
which clues users or UI on how to access other sections. Document conversion
to text should be in the indexing pipeline. 

Another approach could be to index a summary and point to the large doc
in the file system or database.

Cheers,
Jon

-----Original Message-----
From: David Thibault [mailto:[EMAIL PROTECTED] 
Sent: Saturday, February 23, 2008 9:50 PM
To: solr-user@lucene.apache.org
Subject: Re: Indexing very large files.

Thanks.  I'm trying to do a general purpose secure enterprise search system.
 Specifically, it needs to be able to crawl web pages (which are almost all
small files) and filesystems (which may have widely varying file sizes).  I
realize other projects exist that have done similar, but none take into
account the original file permissions, index those too, and then limit
search results to documents that the searching party should have access to
(and hiding results that the searcher should not have access to).  Since the
types of files are not known in advance, I can't exactly split them up into
logical units.  I could possibly just limit my indexing to the first X mb of
any file, though.  I hadn't thought of the implications for relevance or
post-processing that you bring up above.
Thanks,
Dave

On 2/23/08, Jon Lehto <[EMAIL PROTECTED]> wrote:
>
> Dave
>
> You may want to break large docs into chunks, say by chapter or other
> logical segment.
>
> This will help in
>   - relevance ranking - the term frequency of large docs will cause
>    uneven weighting unless the relevance calculation does log
> normalization
>   - finer granularity of retrieval - for example a dictionary, thesaurus,
> and
>    Encyclopedia probably have what you want, but how to get it quickly?
>   - post-processing - like high-lighting, can be a performance killer, as
> the
>    search/replace scans the entire large file for matching strings
>
>
> Jon
>
>
> -----Original Message-----
> From: David Thibault [mailto:[EMAIL PROTECTED]
> Sent: Thursday, February 21, 2008 7:58 PM
> To: solr-user@lucene.apache.org
> Subject: Re: Indexing very large files.
>
> All,
> A while back I was running into an issue with a Java heap out of memory
> error while indexing large files.  I figured out that was my own error due
> to a misconfiguration of my Netbeans memory settings.
>
> However, now that is fixed and I have stumbled upon a new error.  When
> trying to upload files which include a Solr TextField value of 32MB or
> more
> in size, I get the following error (uploading with SimplePostTool):
>
>
> Solr returned an error: error reading input, returned 0
> javax.xml.stream.XMLStreamException: error reading input, returned 0  at
> com.bea.xml.stream.MXParser.fillBuf(MXParser.java:3709)  at
> com.bea.xml.stream.MXParser.more(MXParser.java:3715)  at
> com.bea.xml.stream.MXParser.nextImpl(MXParser.java:1936)  at
> com.bea.xml.stream.MXParser.next(MXParser.java:1333)  at
> org.apache.solr.handler.XmlUpdateRequestHandler.readDoc(
> XmlUpdateRequestHandler.java:318)  at
> org.apache.solr.handler.XmlUpdateRequestHandler.processUpdate(
> XmlUpdateRequestHandler.java:195)  at
> org.apache.solr.handler.XmlUpdateRequestHandler.handleRequestBody(
> XmlUpdateRequestHandler.java:123)  at
> org.apache.solr.handler.RequestHandlerBase.handleRequest(
> RequestHandlerBase.java:117)  at org.apache.solr.core.SolrCore.execute(
> SolrCore.java:902)  at org.apache.solr.servlet.SolrDispatchFilter.execute(
> SolrDispatchFilter.java:280)  at
> org.apache.solr.servlet.SolrDispatchFilter.doFilter(
> SolrDispatchFilter.java:
> 237)
>   at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(
> ApplicationFilterChain.java:235)  at
> org.apache.catalina.core.ApplicationFilterChain.doFilter(
> ApplicationFilterChain.java:206)  at
> org.apache.catalina.core.StandardWrapperValve.invoke(
> StandardWrapperValve.java:233)  at
> org.apache.catalina.core.StandardContextValve.invoke(
> StandardContextValve.java:175)  at
> org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java
> :128
> )
>   at
> org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java
> :102
> )
>   at org.apache.catalina.core.StandardEngineValve.invoke(
> StandardEngineValve.java:109)  at
> org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java
> :286)
>   at
> org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:844)
>   at
> org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(
> Http11Protocol.java:583)  at
> org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java
> :447)  at
> java.lang.Thread.run(Thread.java:613)
>
> I suspect there's a setting somewhere that I'm overlooking that is causing
> this, but after peering through the solrconfig.xml and schema.xml files I
> am
> not seeing anything obvious (to me, anyway...=).  The second line of the
> error shows it's crashing in MXParser.fillBuf, which implies that I'm
> overloading the buffer (I assume due to too large of a string).
>
> Thanks in advance for any assistance,
> Dave
>
>

Reply via email to